Está en la página 1de 144

Informática

Capítulo 1
Introducción
Pasos a seguir para resolver un problema
1- Definición del problema

Consiste en identificar el problema y enunciarlo de una manera comprensible. Se puede partir de


las preguntas: ¿Cuál es el problema? ¿En qué consiste el problema? ¿Cuál es el objetivo al cual
quiero llegar?

2- Análisis del problema

Consiste en identificar con claridad los datos con los que se cuenta, las incógnitas que se deben
calcular, seleccionar el método de trabajo, utilizar las distintas herramientas de las que se
disponen, como ser diagramas de flujo o algoritmos, y verificar su comportamiento con una
prueba de escritorio.

3- Programación

Consiste en llevar el diagrama de flujo o el algoritmo a un lenguaje de programación mediante la


codificación. Para ello se deberán tener en cuenta los tipos de datos que se utilizarán, los
periféricos de entrada y salida y la sintaxis de los comandos del lenguaje seleccionado. Una vez
codificado el proceso se lo llevará a una computadora y se lo verifica, haciendo las correcciones
que sean necesarias.

4- Resolución del problema

La resolución se hará mediante el uso de la computadora, ejecutando el proceso programado, con


los datos reales del problema. Como resultado obtendremos la información buscada.

5- Documentación

Consiste en guardar adecuadamente el diagrama de flujo, la codificación y algunos ejemplos de


ejecución, agregando todas las notas y aclaraciones que pudieran resultar útiles para un posterior
análisis o modificación del proceso desarrollado.

Página 1
Informática

Diagrama de flujo
Un diagrama de flujo es la representación gráfica de los pasos lógicos a seguir para resolver un
problema, que puede ser de procesamiento de datos, científico, etc.
El diagrama de flujo se compone de gráficos estandarizados, que tienen su significado y alcance,
unidos por líneas de flujo, que marcan el recorrido del proceso.

Gráficos del diagrama de flujo. Significado y ejemplos


Proceso

Representa un punto en el problema en que se resuelve una operación,


se asigna un valor a una variable, ya sea en forma directa o a través de
una operación matemática o lógica.

En el interior del gráfico debe aparecer una variable a la izquierda y un signo igual que significa
transferencia o asignación, además de un valor, una operación o una función en el lado derecho,
que será resuelta en primer lugar y luego su resultado será asignado a la variable de la izquierda
para su almacenamiento.
El gráfico de proceso tiene una entrada y una salida de flujo.

Ejemplos:

A=5 La variable A recibe un valor igual a 5

La variable A recibe el resultado de la suma de los valores almacenados en


A=B+C las variables B y C

Dia$ = "Lunes" La variable Dia$ recibe una cadena de caracteres

Como se ve en los ejemplos, las variables almacenan distintos tipos de valores, como por
ejemplo números enteros, números decimales, palabras o cadenas de caracteres, etc. Para cada
tipo de dato almacenado existe un tipo de variable adecuado. Más adelante se estudiarán los
distintos tipos de variables y su capacidad de almacenamiento, así como también las reglas para
su denominación.

Página 2
Informática

Entrada de datos

Representa un punto en el problema en el que se ingresan datos para


ser utilizados en el proceso. Los datos pueden ser ingresados a la
memoria a través del teclado o provenientes de las celdas de una
planilla de cálculo.

En este gráfico se debe colocar la variable que recibe los datos para almacenarlos. En el mismo
gráfico se pueden colocar varias variables separadas por comas. El diagrama de entrada de datos
tiene una entrada y una salida de flujo.

Ejemplos:

x
El programa espera el ingreso de un valor numérico para ser almacenado
en la variable x

El programa espera la introducción de una cadena alfanumérica para ser


Nombre$
almacenada en la variable Nombre$

El programa espera el ingreso de dos valores numéricos que serán


xi , xf
almacenados en las variables xi y xf respectivamente

Decisión

Representa un punto en el programa en que el flujo tomará una


decisión en base a una condición. En el interior del gráfico se
escribe la condición. La condición deberá estar formulada de
Condición Si
manera que pueda tener sólo dos respuestas (si o no, verdadero o
falso, etc.).
No El diagrama de decisión tiene una entrada y dos salidas de flujo.
Una rama de salida del flujo responde a la salida por verdadero y
la otra a la salida por falso.

Ejemplos:

El programa verifica si la variable B contiene un valor igual a 5 y


B=5 Si
selecciona la rama de salida correspondiente.
No

Página 3
Informática

El programa realiza la comparación de los valores almacenados


h>e Si en las variables h y e, y luego selecciona la rama de salida
correspondiente.
No

El programa compara la cadena alfanumérica almacenada en la


Respuesta$ = "SI" Si
variable Respuesta$ con la cadena alfanumérica “SI” y toma la
rama de salida correspondiente.
No

En el diagrama de decisión el signo igual (=) no significa transferencia, como en un proceso,


sino igualdad, y se lo utiliza como condición para comparar si la variable de la izquierda es igual
a la variable o al valor de la derecha.

Salida

Representa un punto del problema en el que se visualiza una deter-


minada información contenida en memoria. La información puede ser
mostrada en pantalla, en una impresora, o ser escrita en las celdas de
una hoja de cálculo.

En el gráfico pueden colocarse variables de diferentes tipos, operaciones matemáticas, valores


numéricos y cadenas alfanuméricas. En cada caso la salida será diferente. Más adelante se verá
en detalle cómo visualizar los valores contenidos en una variable de manera básica y también
cómo generar mensajes de salida combinando palabras y valores numéricos, facilitando la
interpretación para el usuario que utiliza el programa.
El gráfico de salida tiene una entrada y una salida de flujo.

Ejemplos:

Nombre$ El programa imprime el contenido almacenado en la variable Nombre$

C
El programa imprime el contenido almacenado en la variable C

A+B
El programa imprime el resultado de la operación A+B

Página 4
Informática

"C" El programa imprime la letra “C”

Líneas de flujo

Las líneas de flujo marcan el recorrido en que será procesado el


diagrama de flujo. El sentido normal es de arriba hacia abajo y de
izquierda a derecha. Este sentido no necesita flechas.

Cuando se desea recorrer de abajo hacia arriba o de derecha a izquierda es necesario el uso de las
flechas.

Inicio y fin

Inicio Estos gráficos marcan el inicio y el fin del programa, por ello tienen una
sola línea de flujo, que sale o que llega al gráfico, según corresponda.

Es aconsejable que los programas tengan un solo gráfico de fin, como se


Fin
verá más adelante.

Subproceso

Subproceso Representa un punto en el programa en el que se ejecutará un conjunto


de instrucciones repetitivas, que han sido desarrolladas y programadas
por separado. Esto se utiliza por una cuestión de orden y de claridad en
el flujo principal del proceso, dejando por separado la diagramación que
se repite varias veces en el transcurso del programa y sólo se la invoca
desde el flujo principal del programa.
Subproceso

Otro uso muy frecuente consiste en la división de los programas extensos en módulos, que se van
programando por separado y se los invoca desde el flujo principal del programa. Esto se conoce
como programación modulada.
En Visual Basic se pueden utilizar dos tipos de subprocesos, los Procedimientos Sub( ) y los
Procedimientos Function( ). El estudio de estos procedimientos así como de los argumentos que
admiten se verá en detalle más adelante.

Ejemplos:

Ingreso de Este subproceso se encarga de ingresar los datos necesarios para la ejecución
Datos del programa principal. Ha sido resuelto y programado por separado, y en el
programa principal sólo se lo invoca por su nombre.

Página 5
Informática

Este subproceso calcula el factorial de un número n que se suministra cuando


se hace su llamado. Los cálculos para obtener el factorial han sido desarrolla-
Factorial(n) dos y programados por separado, con la ventaja de que este subproceso podrá
ser invocado varias veces dentro del mismo programa suministrando en cada
caso un número diferente para obtener su factorial.

Conectores

Conectores dentro de una misma página

Conectores para cambio de página

Se utilizan para interrumpir el flujo del proceso y retomarlo en otro lado. En su interior se
colocan números o letras iguales, donde se corta y donde se retoma el flujo. Su objetivo es darle
continuidad a las líneas de flujo cuando se cambia de hoja, o bien mejorar la claridad de un
diagrama de flujo en la misma hoja evitando el entrecruzamiento de líneas.

Variables
Las variables son espacios de memoria con un nombre de identificación, que almacenan valores
que pueden ir cambiando durante la ejecución del programa. Las variables pueden ser variables
simples escalares o variables de tipo matricial.
Las variables simples, también conocidas como variables escalares, pueden almacenar un solo
valor a la vez, y el almacenamiento de un nuevo valor desplaza al anterior provocando su
pérdida. Este es el tipo de variables con las que se comienza a trabajar en las primeras unidades.
Las variables matriciales o subindicadas se utilizarán en las unidades finales, ya que son
variables con una estructura interna que permite el almacenamiento de más de un valor, y su
manejo es más complejo.
Las variables pueden ser numéricas o alfanuméricas, es decir, algunas almacenan valores
numéricos y otras almacenan cadenas alfanuméricas formadas por letras, números y otros
caracteres del código ASCII. Las variables numéricas, a su vez, pueden tener diferente precisión,
así se tienen las variables numéricas enteras, las variables numéricas para valores decimales con
simple precisión y doble precisión, variables numéricas para fechas, etc.
En la primera etapa de la materia se utilizarán variables alfanuméricas y variables numéricas sin
precisar exactamente su tipo, pero con el comienzo de las unidades de codificación se especifi-
carán en forma exacta los tipos de variables que requiere cada programa.

Ejemplos:
n=5
c=1
Nombre$ = “José”
Direccion$ = “Av. Alberdi 201”
Indice = 10
j = - 420.12
det = 32.02562546
opcion$ = “si”
DNI$ = “14.628.224”
Página 6
Informática

contador = 0
promedio = acumulador / n
superficie = base * altura

En los ejemplos anteriores se muestran nombres válidos de variables y la asignación de valores


que pueden ser almacenados en ellas, de acuerdo al tipo de variable en cada caso. Las variables
alfanuméricas llevan el símbolo $ al final de su nombre, para distinguirlas de las variables
numéricas, según las normas de nombres válidos para variables en el lenguaje Visual Basic.
Las reglas para la denominación de las variables se explican a continuación en este mismo
capítulo. El estudio de todos los tipos de variables, la precisión de cada una y el espacio de
memoria que utilizan se verá en capítulos posteriores, ya que tiene estrecha vinculación con el
lenguaje de programación seleccionado para codificar los diagramas de flujo.

Reglas de asignación de nombres de variables en Visual Basic


Para dar nombre a constantes y variables en un módulo de Visual Basic han de seguirse las
siguientes reglas:

• El primer caracter debe ser una letra.


• En el nombre no se pueden utilizar espacios, puntos (.), ni el símbolo @.
• No se puede utilizar una letra griega, por ejemplo: α, β, γ, λ, ξ, π, como nombre de
variable. Tampoco se pueden utilizar letras griegas en operaciones matemáticas.
• El nombre no puede tener más de 255 caracteres de longitud.
• Como regla general, no se deben usar nombres iguales a los de los procedimientos
Function, instrucciones y métodos de Visual Basic, es decir todo tipo de palabras
reservadas por el lenguaje Visual Basic.
• Los nombres no se pueden repetir dentro del mismo nivel de alcance. Por ejemplo, no se
pueden declarar dos variables con el nombre edad dentro del mismo procedimiento. Sin
embargo, se puede declarar una variable privada edad y una variable de nivel de
procedimiento llamada edad dentro del mismo módulo.
• Visual Basic no diferencia entre mayúsculas y minúsculas, pero respeta la forma en que
se escriben las instrucciones de declaración de nombres. En otras palabras, para Visual
Basic la variable Ancho, la variable ANCHO o la variable ancho hacen referencia a la
misma variable.

Operadores Aritméticos
Las operaciones matemáticas se transcriben en Visual Basic respetando la sintaxis exigida por el
lenguaje. A continuación se presenta una lista de las operaciones más utilizadas y el operador
correspondiente.

Suma +
Resta -
Producto *
División /
Exponenciación ^

Página 7
Informática

Las operaciones se resuelven según la jerarquía de los operadores matemáticos, es decir, los
operadores de menor jerarquía se resuelven primero, como la exponenciación, el producto y la
división, y luego los de mayor jerarquía, como la suma y la resta. A igualdad de jerarquía la
expresión se resuelve de izquierda a derecha.
Para cambiar el orden de resolución de expresiones matemáticas se deben utilizar paréntesis,
empleando todos los que sean necesarios, uno a continuación de otro, ya que no están permitidos
los corchetes ni las llaves como en la notación matemática. A continuación se pueden ver algu-
nos ejemplos de operaciones y de uso de varios paréntesis.

Ejemplos:
a = 22 * z ^ 3
y = -4 / ( 2 * x )
z=2*x+3*y
x1 = ( -b + ( b^2 – 4 * a * c )) / ( 2 * a )
f = n * (n-1) * (n-2)
delta = ( y2 – y1 ) / ( x2 – x1 )
distancia = ( ( x2-x1 )^2 + ( y2-y1 )^2 ) ^ (1/2)

Página 8
Informática

Ejercicios Capítulo 1:
1. Determinar qué nombres de las siguientes variables son válidos en Visual Basic:

1) TotalVentasAnuales 2) %Intereses
3) NumeroDecimal 4) π
5) Tasa IVA 6) 14Valores
7) Nombre$ 8) Errorξ
9) Fecha$ 10) λ
11) Superficie 12) alfa
13) Dia de Nacimiento$ 14) radio
15) epsilon 16) Direccion$

2. Determinar qué valores se pueden asignar a una variable numérica en Visual Basic:

1) 14.5 2) 225$
3) 47.540 4) 14225 kg
5) 12 cm 6) 15,24

3. Determinar qué procesos de asignación contienen errores y en qué consiste el error cada caso:

1) A = 1.000 2) Q = P/R
3) Promedio = Acumulador / n 4) lado * ancho = Superficie
5) Direccion = “Las Heras 740” 6) Nombre$ = “José Gómez”

4. Determinar qué valores se asignarán a las variables en las siguientes expresiones, si trabaja-
mos con los siguientes valores: A = 8; B = 4 y C = 3:

1) M = A + B + C 2) N = C / 3
3) B = B + 1 4) Superficie = B * C
5) C = A – 1 6) C = C + 2

5. Escribir las siguientes expresiones algebraicas en forma interpretable por el Visual Basic.

x2 + y2
r= r = ax 2 − 5 x + 10
z2
x + y 3x
r = b 2 − 4ac r= − + 4y
z 4
4x + 2 y
r= ab
3z r=
cd
a+b
r= y − y1
c−d r= 2
x 2 − x1
r = ( x 2 − x1 ) 2 + ( y 2 − y1 ) 2
d = 2πr
4
s = πr 3 s = 4πr 2
3

Página 9
Informática

6. Escribir las siguientes expresiones Visual Basic como expresiones algebraicas.

a) y = 3*x^4 - 4*x^3 + x^2 - 10


b) y = B^2 – 4*A*C
c) y = ( A^2 + B^2 ) ^2
d) y = ( A^2 + B^2 ) ^(1/3)
e) n = ( x+y ) / ( z+5 )

7. Evaluar las siguientes expresiones trabajando con los siguientes valores: A=4; B=5 y C=1:

a) Z = 3*A – B^2 / 4*C


b) Z = ( A+B ) / 3^2
c) Z = ((( B+C ) / 2*A + 10 ) *3 *B ) - 6

8. Evaluar las siguientes expresiones para valores de x=2; y=3 y z=2:

a) d = x^y^z
b) d = x^(y^z)
c) d = x-y/z
d) d = (x-y)/z
e) d = 4*x+y+z
f) d = 4*(x+y)+z
g) d = 4*(x+y+z)

Página 10
Informática

Capítulo 2
Procesos lineales
Procesos lineales
En esta primera etapa se comenzará a resolver problemas que requieren un simple proceso lineal
sin bifurcaciones ni repeticiones. Estos programas son muy sencillos y su aplicación es limitada,
pero constituyen el primer paso en el aprendizaje de la programación.
Tanto las bifurcaciones atadas a una condición, como las repeticiones o bucles se verán en los
próximos capítulos.

Ejercicio 2.1:
Efectuar el diagrama de flujo de un programa que lea el largo l y el ancho a de un rectángulo,
calcule su superficie S, e imprima el largo l, el ancho a y la superficie S obtenida.

Inicio Fórmula:
Superficie: S = l . a

l,a Prueba de escritorio:


l a S
S=l*a
5 10
50

l,a,S Salida por pantalla


5 10 50

Fin

Ejercicio 2.2:
Efectuar el diagrama de flujo de un programa que lea el radio r de un círculo, calcule su
superficie S, e imprima el radio r y la superficie S calculada.

Inicio Fórmula:
Superficie: S = π . r2
PI = 3.14
Prueba de escritorio:
PI r S
r 3.14 10
314

S = PI * r ^ 2 Salida por pantalla


10 314
r,S

Fin

Página 11
Informática

En el Ejercicio 2.2 se aprecia el uso de una constante PI. Una variable que mantiene su valor en
un programa, y no lo cambia durante todo el proceso se conoce con el nombre de constante, y la
asignación de su valor se efectúa generalmente al inicio del programa.

Prueba de escritorio y salida por pantalla


La prueba de escritorio que acompaña los dos primeros ejercicios responde a una ejecución del
programa con datos hipotéticos, y en ella se analiza el valor que toman todas las variables a
través del avance de cada proceso. También se agrega la salida por pantalla, que anticipa de una
manera muy esquemática la información que se visualizará en el monitor.
Para distintas ejecuciones del mismo programa se pueden plantear distintos valores de datos, es
decir, valores del lado l y el ancho a en el primer ejercicio, o bien diferentes valores de radio r
para el segundo ejercicio. Cada ejecución tendrá su prueba de escritorio y su salida por pantalla.
La prueba de escritorio, según se ha visto hasta aquí, es el monitoreo de todas las variables que
utiliza el programa, y los distintos valores que van almacenando durante el proceso. Para ello se
deben anotar todas las variables como encabezamiento, y encolumnados hacia abajo todos los
valores que almacenan dichas variables a medida que avanza el programa.

Asignación de dos valores a una variable durante un programa


En los programas puede suceder que una variable reciba más de un valor durante el avance del
flujo del diagrama. La variable actuará con el último valor que le haya sido asignado, ya que en
cada transferencia se almacena un nuevo valor y el contenido anterior se pierde.
En el ejemplo siguiente se aprecia cómo funciona el almacenamiento de valores en variables
escalares mediante un diagrama de flujo simple, con su prueba de escritorio y salida por pantalla.

Inicio
Prueba de escritorio:
A=6 A B S
6 5
B=5
2
10
A=2
Salida por pantalla
10
S=A*B

Fin

El producto S = A*B ha sido efectuado con los valores 2 y 5, como resultado de la utilización de
los últimos valores que tienen almacenadas las variables que participan en el producto. El valor 6
que almacenó en un principio la variable A fue desplazado por el almacenamiento de un nuevo
valor igual a 2, con el cual prosigue el proceso y es el que se utilizará desde ese momento.

Página 12
Informática

Ejercicio 2.3:
Efectuar el diagrama de flujo de un programa que convierta una temperatura ingresada en grados
Fahrenheit a su equivalente en grados Celsius, e imprima el valor obtenido.

El procedimiento permite el ingreso de un dato y lo almacena en la


Inicio variable F, luego calcula la fórmula de equivalencia y la almacena
en la variable C para imprimirla posteriormente.

F Fórmula: Grados Celsius: C = 5/9 * (F-32)

C = 5/9 * (F-32)
Prueba de escritorio:
F C
85
C 29,444

Salida por pantalla


Fin 29.444

Ejercicio 2.4:
Efectuar el diagrama de flujo de un programa que genere un número aleatorio N entre 0 y 10 en
la computadora y lo imprima.

El procedimiento genera un número aleatorio en la computadora


utilizando la función Rnd( ). Esta función genera valores decimales
Inicio entre 0 y 1, por lo tanto se debe multiplicar el número generado
por 10 y luego aplicarle la función Int ( ) que extrae la parte entera
N = INT ( RND( ) * 10) de un número con decimales, para obtener entonces un valor entero
entre 0 y 10, que será almacenado en la variable N. Por último se
imprime el valor de N.
N
Prueba de escritorio n°1:
N
Fin 8

Salida por pantalla


8

Prueba de escritorio n°2:


N
5

Salida por pantalla


5

Página 13
Informática

Ejercicio 2.5:
Efectuar el diagrama de flujo de un programa que calcule el resto r de la división entre dos
números enteros m y n, e imprima el valor del resto r obtenido.

Inicio El procedimiento consiste en calcular primero la división entre m y


n, almacenándola en una variable, luego tomar la parte entera del
resultado y multiplicarla nuevamente por el valor n, por último
m,n sustraer este producto del primer valor m.

c=m/n
Prueba de escritorio:
m n c r
5 2
c = ENT(c)
2.5
2
r=m-c*n 1

Salida por pantalla


r
1

Fin

Ejercicio 2.6:
Efectuar el diagrama de flujo de un programa que obtenga el redondeo de un número a con n
decimales, e imprima el valor resultante.

Inicio El procedimiento utiliza la función ENTERO( ) como el ejercicio


anterior, y además para determinar el criterio de redondeo se toma
en cuenta que un número cuyo dígito decimal es 5 o superior será
a,n redondeado al valor inmediato superior.

a = a * 10 ^ n Prueba de escritorio:
a n
135.476 2
a = a + 0.5
13547.6
13548.1
a = ENT(a) 13548
135.48
a = a / 10 ^ n
Salida por pantalla
135.48
a

Fin

Página 14
Informática

Ejercicio 2.7:
Efectuar el diagrama de flujo de un programa que calcule el valor en radianes de un ángulo, cuya
medida se ha ingresado en formato sexagesimal, con grados, minutos y segundos.

El procedimiento calcula en primer lugar el valor del ángulo


en formato sexagesimal incorporándole los minutos y los
Inicio
segundos como decimales. Luego se efectúa la conversión a
radianes.
gr , min , seg
Fórmulas:
min utos segundos
α grados = grados + +
alfag = gr + min / 60 + seg / 3600 60 3600
3.1416
α radianes = α grados *
180
alfar = alfag * 3.1416 / 180
Prueba de escritorio:
gr min seg alfag alfar .
alfar 45 27 40
45.461111
0.79345
Salida por pantalla
Fin
0.79345

Ejercicio 2.8:
Efectuar el diagrama de flujo de un programa que permita ingresar los datos de un alumno y
calcule el promedio de las notas de dos parciales. Imprimir los datos del alumno y el promedio
obtenido.
Prueba de escritorio:
Inicio Nombre$ LU Nota1 Nota2 Pr .
“José López” 10409 80 90
85
Nombre$, LU
Nota1, Nota2
Salida por pantalla
José López 10409 85
Pr = (Nota1+Nota2) / 2

Nombre$ Prueba de escritorio:


LU , Pr
Nombre$ LU Nota1 Nota2 Pr .
“Carlos Pérez” 12515 92 96
Fin
94
Salida por pantalla
Carlos Pérez 12515 94

Página 15
Informática

Funciones del Visual Basic


El Visual Basic trae un conjunto de funciones de diferentes categorías, que resultan útiles para la
solución de algunos problemas matemáticos que se ven en el curso. A continuación se verán
algunas de las funciones con sus argumentos y ejemplos. El resto de las funciones se pueden
consultar en el menú Ayuda del entorno de programación Visual Basic del Excel.

Función Rnd( )
Sintaxis:
Rnd[(número)]

Comentarios:
La función Rnd( ) devuelve un número aleatorio decimal de simple precisión.
El argumento opcional número es cualquier expresión numérica válida.
La función Rnd( ) devuelve un valor menor que 1 pero mayor o igual a cero. El valor del
argumento número determina cómo la función Rnd( ) genera el número aleatorio: Para cualquier
valor de semilla inicial se genera la misma secuencia de números. Esto es debido a que cada
llamada sucesiva a la función Rnd( ) usará el número anterior como valor de semilla para el
siguiente número de la secuencia.
Antes de llamar a la función Rnd( ), puede utilizar la instrucción Randomize sin argumento para
inicializar el generador de números aleatorios con un valor de semilla basado en el reloj del
sistema.
Para producir enteros aleatorios en un intervalo dado, use esta fórmula:
Int((Límite_superior - límite_inferior + 1) * Rnd( ) + límite_inferior)
Aquí, límite_superior es el número mayor del intervalo y límite_inferior es el número menor del
intervalo.

Ejemplos:

A = Rnd( ) ' Genera un valor aleatorio entre 0 y 1


B = Int((6 * Rnd) + 1) ' Genera un valor aleatorio entre 1 y 6
N = Int(10 * Rnd) ' Genera un valor aleatorio entre 0 y 10
MsgBox Int((100 * Rnd) + 1) ' Imprime un valor aleatorio entre 1 y 100

Instrucción Randomize

Sintaxis:
Randomize [número]

Comentarios:
La instrucción Randomize inicializa el generador de números aleatorios.
El argumento opcional número es cualquier expresión numérica válida.
La instrucción Randomize utiliza el argumento opcional número para inicializar el generador de
números aleatorios de la función Rnd( ) y le asigna un nuevo valor de semilla. Si se omite
número, el valor devuelto por el reloj del sistema se usa como el nuevo valor de semilla.

Página 16
Informática

Si no utiliza la instrucción Randomize, la función Rnd (sin argumentos) utiliza el mismo número
como valor de semilla la primera vez que se la invoca, usando después como valor de semilla el
último número generado.
Nota: Para repetir secuencias de números aleatorios, llame a la función Rnd con un argumento
negativo antes de utilizar la instrucción Randomize con un argumento numérico. Al utilizar la
instrucción Randomize con el mismo valor de número no se repite la secuencia anterior.

Ejemplo:
En este ejemplo se utiliza la instrucción Randomize para inicializar el generador de números
aleatorios. Al omitirse el argumento número, Randomize utiliza el valor de retorno de la función
Timer un nuevo valor de comienzo.

Dim MiValor as Integer ' Dimensiona la variable MiValor como variable entera
Randomize ' Inicializa el generador de números aleatorios
MiValor = Int((6 * Rnd) + 1) ' Almacena en MiValor un número aleatorio entre 1 y 6

Función Int( )

Sintaxis:
Int(número)

Comentarios:
La función Int( ) devuelve la parte entera de un número
El argumento número es cualquier expresión numérica válida, o sea, un número, una fórmula o
una variable numérica decimal de precisión simple o doble.
Las funciones Int( ) y Fix( ) eliminan la fracción de un número y devuelven el valor entero
resultante. La diferencia entre Int( ) y Fix( ) es que si el número es negativo, Int( ) devuelve el
primer entero negativo menor o igual a número, mientras que Fix( ) devuelve el primer entero
negativo mayor o igual a número. Por ejemplo, Int( ) convierte -8.4 en -9 a diferencia de Fix( )
que convierte -8.4 a -8.

Ejemplos:

Dim N as Integer ' Dimensiona la variable N como entera


N = Int(99.8) ' Asigna el valor 99 a la variable N
N = Fix(99.2) ' Asigna el valor 99 a la variable N

N = Int(-99.8) ' Asigna el valor -100 a la variable N


N = Fix(-99.8) ' Asigna el valor -99 a la variable N

MsgBox Int(-99.2) ' Imprime el valor -100


MsgBox Fix(-99.2) ' Imprime el valor -99

Página 17
Informática

Función Abs( )
Sintaxis:
Abs(número)

Comentarios:
El valor absoluto de un número es igual a su magnitud sin el signo. La función Abs( ) devuelve
un valor del mismo tipo que el que se pasó como parámetro y que especifica el valor absoluto del
número. El argumento número puede ser cualquier expresión numérica válida, o sea, un número,
una operación matemática o una variable numérica de cualquier tipo. Si el argumento número
contiene Null, la función devolverá Null; si es una variable no inicializada, devolverá cero.

Ejemplos:

Dim M as Single ' Dimensiona la variable M como decimal de simple precisión


M = Abs(50.3) ' Almacena en M el valor 50.3
M = Abs(-50.3) ' Almacena en M el valor 50.3

MsgBox (-24.36) ' Imprime el valor 24.36


MsgBox (-1) ' Imprime el valor 1

Operador Mod
Sintaxis:
variable = número1 Mod número2

Comentarios:
El operador Mod divide dos números y devuelve sólo el resto.

El operador de módulo o resto divide número1 por número2 redondeando los números decimales
a enteros y devuelve sólo el resto como resultado, asignándolo a la variable que se encuentra a la
izquierda del signo igual. En el siguiente ejemplo A recibe el valor 5.
A = 19 Mod 6.7
Generalmente el tipo de dato del resultado es Integer o entero. La parte fraccionaria se trunca.
Sin embargo, si cualquiera de las expresiones es Null, el resultado será Null. Toda expresión
Empty se considera como 0.

Ejemplos:
En estos ejemplos se utiliza el operador Mod para dividir dos números y obtener como resultado
sólo el resto de la división. Si uno de los números es decimal, se redondea primero para
convertirlo en un entero.

Dim MiResultado as Integer ' Dimensiona la variable MiResultado como entera


MiResultado = 10 Mod 5 ' Almacena en MiResultado el valor 0
MiResultado = 10 Mod 3 ' Almacena en MiResultado el valor 1
MiResultado = 12 Mod 4.3 ' Almacena en MiResultado el valor 0
MiResultado = 12.6 Mod 5 ' Almacena en MiResultado el valor 3

Página 18
Informática

Función Sin( )
Sintaxis:
Sin(ángulo)

Comentarios:
La función Sin( ) calcula el seno de un ángulo dando como resultado un número decimal de
doble precisión. El resultado entra dentro del intervalo -1 a 1.
El argumento ángulo es cualquier expresión numérica válida que exprese un ángulo en radianes.
Para convertir grados a radianes, multiplique los grados por π/180. Para convertir radianes a
grados, multiplique los radianes por 180/π.

Función Cos( )
Sintaxis:
Cos(ángulo)

Comentarios:
La función Cos( ) calcula el coseno de un ángulo dando como resultado un número decimal de
doble precisión. El resultado entra dentro del intervalo -1 a 1.
El argumento ángulo es cualquier expresión numérica válida que exprese un ángulo en radianes.
Para convertir grados a radianes, multiplique los grados por π/180. Para convertir radianes a
grados, multiplique los radianes por 180/π.

Función Tan( )
Sintaxis:
Tan(ángulo)

Comentarios:
La función Tan( ) calcula la tangente de un ángulo dando como resultado un número decimal de
doble precisión. El argumento ángulo es cualquier expresión numérica válida que exprese un
ángulo en radianes. Para convertir grados a radianes, multiplique los grados por π/180. Para
convertir radianes a grados, multiplique los radianes por 180/π.

Ejemplos:

Dim ang as Double ' Dimensiona la variable ang como decimal de doble precisión
ang = 1.3 ' Almacena en la variable ang el valor del ángulo en radianes
MsgBox (Sin(ang)) ' Imprime el seno del ángulo almacenado en ang
MsgBox (Cos(ang)) ' Imprime el coseno del ángulo almacenado en ang
MsgBox (Tan(ang)) ' Imprime la tangente del ángulo almacenado en ang

Página 19
Informática

Función Log( )
Sintaxis:
Log(número)

Comentarios:
La función Log( ) devuelve el logaritmo natural de un número. El logaritmo natural es el
logaritmo en base e. El valor de la constante e es 2.718282 aproximadamente. El argumento
número es cualquier expresión numérica válida mayor que cero.
Puede calcular logaritmos en base-n para cualquier número x dividiendo el logaritmo natural de
x por el logaritmo natural de n de la siguiente manera:
Logn(x) = Log(x) / Log(n)
El ejemplo siguiente ilustra el cálculo del logaritmo en base 10 de un número almacenado en x:
Log10 = Log(x) / Log(10#)

Ejemplo:

Dim ang as Double ' Dimensiona la variable ang como doble precisión
ang = 1.3 ' Define el valor del ángulo en radianes
Shi = Log(ang + Sqr(ang * ang + 1)) ' Calcula el seno hiperbólico inverso
MsgBox (Shi) ' Imprime el seno hiperbólico inverso

Función Sqr( )
Sintaxis:
Sqr(número)

Comentarios:
La función Sqr( ) calcula la raíz cuadrada de un número. El argumento número es cualquier
expresión numérica válida mayor o igual a cero.

Ejemplos:

Dim n as Double ' Dimensiona la variable n como numérica de doble precisión


n = Sqr(4) ' Almacena un 2 en la variable n
n = Sqr(23) ' Almacena el valor 4.79583152331272 en la variable n
n = Sqr(0) ' Almacena el valor 0 en la variable n
n = Sqr(-4) ' Provoca un error en tiempo de ejecución

Página 20
Informática

Ejercicios Capítulo 2:
1. Realizar el diagrama de flujo para sumar dos números enteros e imprimir el resultado.

2. Realizar el diagrama de flujo para calcular e imprimir la superficie de un triángulo en función


de la base y la altura ( S=1/2 x Base x Altura ).

3. Realizar el diagrama de flujo de un proceso que lea una medida en centímetros y la transforme
a pulgadas e imprima el resultado. ( 1 pulgada = 2.54 centímetros )

4. Realizar el diagrama de flujo de un proceso que lea un ángulo en grados y los convierta a
radianes e imprima el resultado. ( 180 grados = 3.1416 radianes )

5. Realizar el diagrama de flujo de un proceso que lea el lado de un cubo y calcule su volumen.

6. Realizar el diagrama de flujo para convertir una temperatura en grados Fahrenheit a grados
Celsius. Imprimir el resultado. ( °C = 5/9 * (°F-32) )

7. Realizar el diagrama de flujo para convertir una lectura en horas, minutos y segundos a
formato de hora con punto decimal. Imprimir el resultado.

8. Realizar el diagrama de flujo para convertir una lectura en horas, minutos y segundos a su
valor en segundos. Imprimir el resultado.

9. Realizar el diagrama de flujo para convertir una lectura en formato de hora con punto decimal
a horas, minutos y segundos. Imprimir el resultado.

10. Realizar el diagrama de flujo para convertir una lectura en segundos a su valor en horas,
minutos y segundos. Imprimir el resultado.

11. Realizar el diagrama de flujo de un proceso que permita ingresar un nombre, un documento
de identidad, la fecha de nacimiento y la edad de una persona, y luego imprima los datos
obtenidos.

12. Realizar el diagrama de flujo de un proceso que permita calcular el precio de un artículo en el
año 2009, con el ingreso del precio actual y considerando una tasa de inflación constante
mensual de 4%. ( P = C * (1+R)^N )

13. Realizar el diagrama de flujo para intercambiar los valores de las variables A y B. Hacer la
prueba de escritorio con el supuesto de A=32 y B=75.

14. Realizar el diagrama de flujo de un programa que genere un número al azar entre 0 y 1.

15. Realizar el diagrama de flujo de un programa que genere un número al azar entre 0 y 10.

16. Realizar el diagrama de flujo de un programa que genere un número al azar entre 1 y 100.

Página 21
Informática

17. Realizar las pruebas de escritorio y las salidas por pantalla de los siguientes diagramas de
flujo:

Inicio Inicio Inicio

A=9 A=3
A=3

B=5 B=5
A = A+2

S = A+B
A,B
A
D = A-B

P = 12
P = A*B Nombre$ = "Luis"

M = P/3
Calificacion = 7.50
S,D,P
R = 2*M
Nombre$ , Calificacion
Fin
M,R

Fin Fin

18. Realizar las pruebas de escritorio con datos seleccionados por el alumno, y las salidas por
pantalla correspondientes, de los siguientes diagramas de flujo:

Inicio Inicio

Nombre$, LU Nombre$, Sexo$


Nota1, Nota2 min , seg

Pr = (Nota1+Nota2) / 2 tiempo = min * 60 + seg

Nombre$ distancia = 1000


LU , Pr

vel = distancia / tiempo


Fin
Nombre$
tiempo , vel

Fin

Página 22
Informática

Capítulo 3
Procesos con estructuras de selección
Procesos con estructuras de selección
Los procesos lineales vistos en el capítulo anterior permiten solucionar un muy reducido número
de problemas, ya que cualquier pequeña complejidad incorporada nos obliga a tomar alguna
alternativa de entre varias posibles.
Para ello la programación provee varias estructuras de selección, de las cuales estudiaremos la
más simple: la decisión con dos ramas de salida, que a pesar de su simplicidad nos permite
resolver un numeroso grupo de problemas.

Ejercicio 3.1:
Efectuar el diagrama de flujo de un programa que lea el largo l y el ancho a de un rectángulo, y
calcule su perímetro P. Si el perímetro P es mayor a 12, que calcule e imprima su superficie S.

Fórmulas:
Perímetro: P = 2 . ( l + a )
Inicio
Superficie: S = l . a

l,a Prueba de escritorio 1:


l a P S
3 2
P=2*(l+a) 10

Salida por pantalla 1


P > 12 Si

S=l*a

No S

Prueba de escritorio 2:
l a P S
Fin
5 7
24
35

Salida por pantalla 2


35

En este ejercicio nos encontramos con la primera decisión, donde se compara el perímetro P con
un valor 12. La condición del diagrama debe ser formulada de manera que pueda tener solamente
dos respuestas (Si o No, Verdadero o Falso, etc.) para poder utilizar el gráfico de decisión visto
en el capítulo 1.

Página 23
Informática

En las dos ramas de salida del gráfico de decisión pueden existir procesos, y en algunos casos los
procesos se encontrarán en una sola de las ramas. Para esta última situación se sugiere formular
la condición de manera que los procesos queden ubicados en la rama del SI, dejando vacía la
rama de salida del NO. Esto obedece a facilitar su codificación con la estructura cerrada del IF-
THEN como se verá más adelante.
Una vez efectuados los procesos de cada rama, las líneas de flujo vuelven a unirse más abajo, en
correspondencia con el cierre de la estructura de decisión, y a partir de este cierre continúa una
sola línea de flujo.
En el Ejercicio 3.1 el cierre de la estructura condicional conduce a la finalización del diagrama
de flujo al cumplir lo solicitado por el enunciado.

Operadores relacionales
Los operadores relacionales comparan dos datos del mismo tipo y producen un valor lógico
como resultado de la comparación, es decir, son los que producen la respuesta Verdadero o Falso
Si o No. En el Ejercicio 3.1 se utilizó el operador relacional > (mayor que), pero se admiten una
cantidad de seis operadores de relación, como lo muestra el cuadro siguiente:

Operador de relación Significado


< Menor que
> Mayor que
= Igual a
<= Menor o igual que
>= Mayor o igual que
<> Diferente a

Unión de varias condiciones en un mismo gráfico de decisión


El gráfico de decisión estudiado tiene solo dos salidas, por Si o por No, de manera que la
pregunta o condición que se formula en su interior debe tener la estructura adecuada que brinde
solo dos respuestas posibles.
En muchos casos se necesita hacer más de una comparación para tomar una decisión en el flujo
del proceso. Estas preguntas simultáneas deben ser combinadas mediante operadores lógicos que
funcionan de manera idéntica al álgebra de Boole, ya estudiado en materias anteriores.
En el desarrollo del curso es suficiente el aprendizaje de dos operadores lógicos: Y (AND) y O
(OR). Los ejemplos siguientes aclaran el uso de estos operadores.

Operador Y (And)
Al igual que en álgebra, la salida por Si se producirá en el caso
de que todas las condiciones resulten verdaderas. Es suficiente
x > x1 y x < x2 Si que una de las condiciones no se cumpla para que el flujo tome
la rama del No.
No

Página 24
Informática

Operador O (Or)
En este caso es suficiente que alguna de las condiciones sea
A>5oB>7 Si
verdadera para obtener una salida por la rama del Si. Si todas las
condiciones fueran falsas, el flujo continúa por la rama del No.
No

Ejercicio 3.2:
Efectuar el diagrama de flujo de un programa que lea tres valores a, b y c, determine si estos
valores pueden ser los lados de un triángulo, y en caso afirmativo que calcule la superficie S del
triángulo y la imprima.
Fórmulas:
Inicio Para verificar si los valores pertenecen a los lados de un
triángulo utilizamos la siguiente propiedad:
a,b,c
p=a+b+c debe ser mayor a todos y a cada uno de
2 los lados
p=(a+b+c)/2
es decir: p>a y p>b y p>c
p>a y p>b
y p>c
Si La superficie se calcula con la siguiente fórmula:

S = ( p * (p-a) * (p-b) * (p-c) ) ^ (1/2) S= p.( p − a ).( p − b).( p − c)

No S Prueba de escritorio 1:
a b c p S
10 8 6
12 24
Fin
Salida por pantalla 1
24

Prueba de escritorio 2:
a b c p S
10 2 4
8

Salida por pantalla 2

Página 25
Informática

Ejercicio 3.3:
Efectuar el diagrama de flujo de un programa que lea dos números a y b, los compare y almacene
en dos variables diferentes el mayor y el menor de ellos. Imprimir los resultados.

Inicio
Prueba de escritorio:
a b mayor menor
a,b 10 12
12 10

Salida por pantalla


a>b Si
Mayor = 12
Menor = 10
No

mayor = b mayor = a

menor = a menor = b

"Mayor =" , mayor


"Menor =" , menor

Fin

Página 26
Informática

Ejercicio 3.4:
Efectuar el diagrama de flujo de un programa que calcule las raíces x1 y x2 de una ecuación de 2°
grado: a.x2 + b.x + c = 0.

Inicio
Fórmula:

a,b,c x1 − b ± b 2 − 4ac
=
x2 2a

d=b^2-4*a*c Prueba de escritorio:


a b c d x1 x2
2 10 3
d >= 0 Si 76
8.717798
d = sqr ( d ) -0.32055 -4.67945

x1 = ( - b + d ) / ( 2 * a )
Salida por pantalla
x1 = - 0.32055
x2 = ( - b - d ) / ( 2 * a ) x2 = - 4.67945
No

"x1 =" , x1
"x2 =" , x2

Fin

Página 27
Informática

Ejercicios Capítulo 3:
1. Realizar el diagrama de flujo de un programa que lea dos números a y b, e imprima el mayor
de ellos.

2. Realizar el diagrama de flujo de un programa que permita leer cuatro números y a conti-
nuación imprima el mayor de los cuatro.

3. Realizar el diagrama de flujo de un programa que lea tres números y encuentre si alguno de
ellos es igual a la suma de los otros dos. En ese caso, imprimir el número encontrado.

4. Realizar el diagrama de flujo de un programa que lea la nota numérica de un estudiante y


asigne una calificación según la siguiente tabla:

90-100 Sobresaliente
80-89 Distinguido
70-79 Bueno
60-69 Aprobado
menos de 60 Insuficiente

Imprimir en pantalla la calificación asignada.

5. Realizar el diagrama de flujo de un programa que permita determinar si un número leído por
teclado es divisible por 2, por 3 o por 5. Imprimir para cada caso la respuesta.

6. Realizar el diagrama de flujo de un programa que lea dos números A y B, los compare y
almacene en dos variables diferentes el mayor y el menor de ellos. Imprimir los resultados.

7. Realizar el diagrama de flujo de un programa que permita determinar si un corredor será


seleccionado para participar de una maratón cuyas condiciones son:
Para hombres menores a 40 años, el tiempo de calificación debe ser menor a 150 minutos.
Para hombres mayores a 40 años, el tiempo de calificación debe ser menor a 175 minutos.
Para mujeres, el tiempo de calificación debe ser menor a 180 minutos.
El proceso debe permitir ingresar desde el teclado los datos de edad, sexo y tiempo en la prueba
de calificación.

8. Realizar el diagrama de flujo de un programa que permita resolver las raíces de la ecuación de
segundo grado y=ax2+bx+c contemplando todas sus variantes e imprimir las soluciones
obtenidas.

x1 − b ± b 2 − 4ac
=
x2 2a

Página 28
Informática

Capítulo 4
Procesos con estructuras de repetición
Estructura de contador
Esta es una operación que incrementa en una unidad el valor
c=c+1 almacenado en la variable c, cada vez que el flujo del diagrama pasa
por esta estructura.

Su secuencia de cálculo es igual a las vistas anteriormente, es decir, primero se resuelve la


operación a la derecha del signo igual y después se transfiere el resultado obtenido a la variable
que se muestra a la izquierda del signo igual.
En el caso presentado el incremento del conteo es igual a uno, pero en otras estructuras podría
ser necesario un conteo descendente por ejemplo con –1, o bien un conteo con un valor constante
h diferente de 1.

Estructura de acumulador
En esta expresión se efectúa una acumulación de un valor s en la
ac = ac + s variable ac, cada vez que el flujo del programa encuentra esta
estructura.

El valor que toma s en cada acumulación es esencialmente variable, lo que diferencia este caso
de la estructura de contador vista anteriormente.
Cada valor de s irá incrementando el valor de ac, resolviendo en primer lugar la operación a la
derecha del signo igual y transfiriendo luego el resultado a la variable ac.

Ejercicio 4.1:
Efectuar el diagrama de flujo de un programa que acumule la suma de los primeros n números
naturales e imprima su resultado.
Inicio

Prueba de escritorio:
c=0
ac = 0 n c ac
4 0 0
1 1
n
2 3
3 6
4 10
c=c+1
5

Salida por pantalla


c>n Si
10
No
ac
ac = ac + c

Fin

Página 29
Informática

Ejercicio 4.2:
Efectuar el diagrama de flujo de un programa que sume los números impares comprendidos en el
intervalo (a,b) e imprima el resultado.

Para determinar si un número es par o impar tenemos dos métodos que se pueden utilizar en los
diagramas de flujo. Los métodos consisten en:

1.- Comparar el resto de la división por 2 : Si es cero = el número es par


Si no es cero = el número es impar

2.- Comparar el resultado de elevar –1 a la potencia


usando como exponente el número a averiguar: Si es 1 = el número es par
Si es –1 = el número es impar

Ejemplos:

Resto (A/2) = 0 Si (-1) ^ A = 1 Si

No No

A es impar A es par A es impar A es par

Inicio

ac = 0
Prueba de escritorio:
a b c ac
a,b 2 8 0
3 3
5 8
7 15
Resto(a/2) = 0 Si
9
No

c=a c=a+1 Salida por pantalla


15

ac = ac + c

c=c+2

c>b Si

No ac

Fin

Página 30
Informática

Ejercicio 4.3:
Efectuar el diagrama de flujo de un programa que calcule el máximo común divisor mcd de dos
números naturales a y b, e imprima el resultado.

Obtendremos el mcd mediante el siguiente procedimiento:


- Determinar el menor valor entre a y b.
- Verificar si ese valor ya es el mcd, es decir, si es divisible el mayor valor por el menor valor.
- Si no lo es, se utiliza un contador c decreciente.
- Se verifica para cada valor de c si los números a y b son divisibles por el contador c.
- Si no son divisibles, se decrementa el valor de c.
- En el caso en que los dos números a y b sean divisibles por el contador c, estamos en presencia
del mcd que es igual a dicho valor de c.
- Se imprime el resultado.

Inicio

c=0 Prueba de escritorio:


c a b r1 r2 mcd
0 4 10
a,b
4 0 2
3 1 1
2 0 0 2
a>b Si

No
Salida por pantalla
c=a c=b
2

r1 = Resto(a / c)

r2 = Resto(b / c)

r1 = 0
y Si
r2 = 0

No mcd = c

c=c-1
mcd

Fin

Página 31
Informática

Ejercicio 4.4:
Efectuar el diagrama de flujo de un programa que calcule el mínimo común múltiplo mcm de
dos números naturales a y b, e imprima el resultado.

En este caso el procedimiento es similar, pero tomando el mayor de los dos números, que será el
límite inferior del contador c creciente. Se verifica en cada caso si el contador c es divisible por
los dos números a y b, y en caso afirmativo estaremos en presencia del mcm.
El contador será ascendente y su límite superior será a.b.

Inicio

c=0

a,b

a>b Si

No

c=b c=a

r1 = Resto(c / a)

r2 = Resto(c / b)

r1 = 0
y Si
r2 = 0

No mcm = c

c=c+1
mcm

Fin

Nota: Es importante aclarar que las dos expresiones vistas de contador y acumulador no serían
válidas desde el punto de vista matemático, ya que plantean una igualdad que no se puede
conseguir, pero en computación, donde el signo igual significa transferencia, son totalmente
válidas e inclusive muy utilizadas por su utilidad en conteos, acumulación de valores, aumento
del valor de una variable x con incremento h, etc.

Página 32
Informática

Ejercicio 4.5:
Efectuar el diagrama de flujo de un programa que lea por teclado e imprima una lista de números
enteros distintos de cero. El proceso debe terminar con un valor igual a cero que no se debe
imprimir. Imprimir además el número de valores leídos.

Inicio

Prueba de escritorio:
c=0 a c .
0
4 1
a 7 2
5 3
9 4
a=0 Si 2 5
0
No

c=c+1 Salida por pantalla


4
7
a 5
9
2
"Cantidad =" , c Cantidad = 5

Fin

Página 33
Informática

Control de las estructuras de repetición


Bucles controlados por contador
Un bucle controlado por contador es un bucle que se ejecuta un número especificado de veces.
Es necesario para el diseño correcto del bucle un mecanismo que cuente el número de veces que
se ejecuta el cuerpo del bucle. El mecanismo que se utiliza es una variable de control del bucle
que actúa como un contador.
Un bucle controlado por contador consta de tres partes, además del cuerpo y de la condición de
salida:

- Inicialización de la variable de control del bucle.


- Comprobación del valor de la variable de control del bucle o de la condición de salida.
- Incremento del valor de la variable de control del bucle.

El siguiente segmento de diagrama de flujo muestra un bucle que cuenta 100 números leídos
desde el teclado, con las aclaraciones de los pasos importantes en el bucle.

Cuenta = 1 - Inicialización de cuenta, variable de control de bucle

Cuenta > 100 Si


- Condición de salida
No

num

Cuenta = Cuenta + 1 - Incremento de la variable de control

El cuerpo del bucle se repite mientras la condición sea falsa. Inicialmente el contador (variable
Cuenta) es igual a 1, y por lo tanto la condición es falsa: el cuerpo del bucle se ejecutará. A
continuación la variable Cuenta se incrementa a 2 y la condición sigue siendo falsa. El cuerpo
del bucle se repite 100 veces y en ese momento la variable Cuenta toma el valor 101, por lo tanto
la condición se vuelve verdadera y el bucle termina saliendo por la rama del Si.
Las variables de control del bucle son siempre contadores. Normalmente los contadores se
inicializan en 0 o 1, La decisión de inicializar el contador a 0 o 1 depende del diseño del
programador o del problema en cuestión. En el uso de contadores se deben considerar al menos
tres factores: 1) el valor inicial, 2) el valor final, y 3) el operador relacional utilizado para
comprobar la terminación del bucle.
La ubicación física de la sentencia que modifica el valor de la variable de control del bucle
depende de su diseño, y su posición normalmente influye en el número de iteraciones que realiza
el bucle.

Página 34
Informática

Comparación de diferentes tipos de bucles controlados por contador

i=0 0
1
2
3
4
i >= 10 Si 5
6
7
No 8
9
i

La salida por pantalla es el valor del contador del


i=i+1
bucle i. El bucle se ejecuta 10 veces, hasta que i=10,
y la condición se hace verdadera.

1
2
i=0 3
4
5
6
i >= 10 Si 7
8
9
No 10

i=i+1

El cuerpo del bucle se ejecuta 10 veces pero su


i
salida es diferente al caso anterior. Cuando i=10 el
bucle se ejecuta, se efectúa la impresión, y al llegar
a la condición de salida y ser verdadera, el bucle
finaliza.

i=1 1
2
3
4
5
i >= 10 Si 6
7
8
No 9

El bucle sólo se ejecuta 9 veces, como se puede


i=i+1
apreciar en la salida por pantalla. Las únicas
diferencias radican en el valor inicial de la variable i
y la ubicación del contador i=i+1.

Los ejemplos anteriores han mostrado principalmente el mecanismo para modificar el flujo de
control de los programas. Sin embargo, los bucles sirven fundamentalmente para realizar tareas a
fin de que puedan ser útiles. La complejidad de la tarea a realizar dependerá del problema y del
diseño eficiente del bucle, es decir que el gráfico de impresión por pantalla de los ejemplos
dados anteriormente será reemplazado por un conjunto de instrucciones de acuerdo a cada caso
en particular.

Página 35
Informática

Bucles controlados por centinela


Los bucles se utilizan con frecuencia para leer y procesar listas de datos sin conocer el número
de ellos por anticipado. Cada vez que una iteración se ejecuta, se realiza una nueva lectura de
datos. El problema consiste en determinar cuándo se termina el proceso de lectura y se sale del
bucle. Una solución al problema es el uso de un valor especial de datos denominado centinela.
Un centinela es un valor especial utilizado para indicar el final de una lista de datos y que no se
procesa como un dato válido. El valor centinela es la acción o suceso que controla el bucle.
El bucle se ejecuta mientras no se lea el valor centinela. En el momento que se lee el valor
centinela y éste se reconoce en la condición inicial, se sale del bucle.
Uno de los problemas que se plantean en el diseño del tipo de bucles controlado por centinela es
precisamente la elección adecuada del valor centinela. Muchas veces el problema fija cuál es el
centinela. Por ejemplo, si el problema no permite números de valores iguales a cero, entonces el
cero será el valor centinela. Otro ejemplo puede ser el caso de procesar valores enteros que
representen números de identificación de alumnos o trabajadores de una empresa; como en este
caso los números deben ser mayores o iguales a cero, cualquier número negativo o cero puede
ser tomado como centinela. Un ejemplo más es el proceso de edades de personas, que puede
suponerse razonablemente que estarán entre 0 y 150 (siendo inclusive 150 un valor ya muy alto),
por ello cualquier número negativo o un número positivo superior, como ser 999, etc, puede ser
el centinela.
Los requisitos que se pueden fijar para ser considerados los valores como centinela son:

- El valor centinela debe ser único, es decir, debe ser fácilmente diferenciable del resto.
- El centinela debe ser del mismo tipo que los valores reales de los datos, de modo que pueda
leerse con la misma sentencia de entrada.
- El valor realmente utilizado para terminar la entrada de datos debe ser el mismo valor
esperado por el programa.

Ejemplo de bucle controlado por centinela


Inicio
Se deben leer las calificaciones de los diferentes
estudiantes de una clase, cuyas notas están en el
c=0 rango de 0 a 100. Determinar y visualizar la nota
promedio de la clase.
Suma = 0

La condición estipulada de salida será el ingreso


Nota
de un valor igual a –999, es decir, el centinela del
problema es el número –999. Además de ello, al
no conocer de antemano el número de notas a
Nota = -999 Si
ingresar se coloca un contador c, y con el ingreso
de cada nota válida se activa el conteo c=c+1 y la
No acumulación de las notas en una variable Suma.
Suma = Suma + Nota
Cuando se ingresa el valor centinela se sale del
bucle y se procede a calcular el promedio,
c=c+1 Media = Suma / c
dividiendo el valor acumulado en Suma y la
cantidad de notas almacenada en la variable c. Por
último se produce la visualización del valor de la
Media variable Media.

Fin

Página 36
Informática

Bucles controlados por bandera o interruptor


Una bandera, indicador o interruptor (flag) es una variable que se utiliza para conservar el
estado (verdadero o falso) de una condición. Se denomina bandera o interruptor debido a que
puede ser asociado a un interruptor (encendido / apagado) o a una bandera (arriba / abajo). Se
pueden utilizar variables lógicas cuando el lenguaje las provea, o bien se pueden simular con
variables enteras a las que se le asignan valores 0 (falso) o 1/-1 (verdadero).
Con frecuencia se desea repetir una serie de acciones mientras que una determinada condición
sea verdadera. Entonces el bucle se controla por el valor verdadero de la condición. Se puede
utilizar una bandera de programa para almacenar este valor verdadero.

Ejemplo de bucle controlado por bandera

Supongamos que se necesita un proceso para buscar un valor x en una lista de n datos, que están
almacenados en un vector Dato( ). La búsqueda debe terminar si se encuentra el valor x o bien si
la lista de datos se agota.

f=0 - La variable bandera f comienza el proceso con un 0.

c=1

Dato(c) = x Si
- Si se encuentra el valor x dentro del vector Dato( ) la
f=1 variable bandera f cambia su valor a 1.
No

c=c+1

c>n
- La condición de salida del bucle será la comparación
o Si de la cantidad de datos leídos y además la verificación
f=1 del valor bandera almacenado en la variable f.

Página 37
Informática

Ejercicios Capítulo 4:
1. Realizar el diagrama de flujo que efectúe la suma de los números pares hasta 200 inclusive.
Imprimir la suma.

2. Realizar el diagrama de flujo que lea por teclado e imprima una serie de números distintos de
cero. El proceso debe terminar con un valor cero que no se debe imprimir. Imprimir además el
número de valores leídos.

3. Realizar el diagrama de flujo para calcular la velocidad (m/seg) de cada corredor de una
carrera de 1500 mts. Las entradas consistirán en parejas de números (minutos, segundos) que dan
el tiempo del corredor, para cada corredor. El proceso debe imprimir el tiempo en minutos y
segundos, así como la velocidad media de cada corredor. El fin del proceso se producirá cuando
la pareja de valores de tiempo sea (0,0).

4. Realizar el diagrama de flujo que determine el menor valor y el mayor valor de una lista de 25
números leídos desde el teclado.

5. Realizar el diagrama de flujo de un procedimiento que genere 10 números aleatorios y los


imprima.

6. Realizar el diagrama de flujo de un procedimiento que genere números al azar entre 0 y 10, y
cuya salida se produzca con el número 0.

7. Realizar el diagrama de flujo de un procedimiento que genere 10 números aleatorios entre 1 y


6 inclusive, simulando 10 tiradas de un dado.

Página 38
Informática

Ejercicio 4.6:
Efectuar el diagrama de flujo de un programa que lea por teclado un material de construcción y
la cantidad de bolsas compradas de cada uno, acumule las distintas cantidades por separado y
termine con la cadena alfanumérica “Fin”. Imprimir los resultados.

Inicio
Prueba de escritorio:
Material$ Cantidad AC1 AC2 .
AC1 = 0 “Cemento” 10 10
“Cal” 25 25
AC2 = 0 “Cal” 10 35
“Cal” 30 65
“Cemento” 15 25
Material$
“Cemento” 10 35
Cantidad
“Fin”

Material$="Cemento" Si
Salida por pantalla
AC1 = AC1 + Cantidad Cemento = 35
No Cal = 65

Material$="Cal" Si

AC2 = AC2 + Cantidad


No

Material$="Fin" Si

"Cemento =", AC1


No "Cal =", AC2

Fin

Página 39
Informática

Capítulo 5
Tablas de funciones
Tablas de funciones
La impresión de tablas en la computadora se obtiene mediante un proceso repetitivo, en el cual
se calculan los diferentes valores de las variables para cada paso y se los imprime en forma
encolumnada. Para cada función se deberá controlar si tiene algún punto de indeterminación ya
que el resultado matemático ∞ (infinito) produce un error de desbordamiento en la computadora.

Ejercicio 5.1:
Calcular los cuadrados y cubos de los primeros n números naturales e imprimir una tabla con los
resultados.

Inicio
Prueba de escritorio:
n c cuad cubo
n
4 0
1 1 1
c=0 2 4 8
3 9 27
4 16 64
c=c+1 5

Salida por pantalla


c>n Si 1 1 1
2 4 8
No Fin 3 9 27
cuad = c ^ 2 4 16 64

cubo = c ^ 3

c , cuad , cubo

Página 39
Informática

Ejercicio 5.2:
Tabular la función: y = a.x2 + b.x + c para valores de x comprendidos en el intervalo x0 a x1, con
un incremento h. Imprimir los resultados.

El ejercicio consiste en hacer una tabla de x e y para la función cuadrática que aparece en el
enunciado. Para ello se deben ingresar por el teclado las constantes a, b y c, y posteriormente
tomar los distintos valores de x y calcular el resultado de la función y = f(x) para cada caso, e
imprimir la tabla de valores, en cada línea el valor de x y su respectivo resultado y.
Los valores de x se irán asignando mediante una estructura de contador, con la diferencia de que
el incremento no será igual a 1, sino que en forma genérica estará dado por un valor h, que
también se introducirá por teclado. La estructura de contador queda entonces x = x + h.

Inicio

a,b,c
Prueba de escritorio:
a b c x0 x1 h x y
x0 , x1 , h 1 3 10 0 3 0.5
0 10
x = x0
0.5 11.75
1 14
1.5 16.75
y=a*x^2+b*x+c 2 20
2.5 23.75
3 28
x,y
3.5

x=x+h Salida por pantalla


0 10
0.5 11.75
x > x1 Si
1 14
1.5 16.75
No
Fin ... ...
3 28

Página 40
Informática

Ejercicio 5.3:

Tabular la función y = c ± r 2 − ( x − d ) 2 para valores de x comprendidos en el intervalo x0 a x1,


con un incremento h, teniendo en cuenta que x0 = d – r ; y x1 = d + r.

Inicio

c,r,d

x0 = d - r

x1 = d + r

x = x0

y1 = c + (r^2 - (x-d)^2)^0.5

y2 = c - (r^2 - (x-d)^2)^0.5

x , y1 , y2

x=x+h

x > x1 Si

No
Fin

Página 41
Informática

Ejercicio 5.4:

Tabular la función: y = n x para valores de x positivos comprendidos en el intervalo x0 a x1, con


un incremento h. Imprimir los resultados.

Recordemos que: si n es par --> y1 , y2


si n es impar --> y

Prueba de escritorio
Inicio n x0 x1 h x y y1 y2
2 1 4 1 1 +1 -1
2 +1.414 -1.414
n
3 +1.732 -1.732
4 +2 -2
x0 , x1 , h

Salida por pantalla


x = x0 1 +1 -1
2 +1.414 -1.414
3 +1.732 -1.732
(-1) ^ n > 0 Si 4 +2 -2

No
y1 = x ^ (1/n)

y = x ^ (1/n) y2 = - x ^ (1/n)

x,y x , y1 , y2

x=x+h

x > x1 Si

No Fin

Página 42
Informática

Tablas con funciones trigonométricas

Ejercicio 5.5:
Tabular la función: y = seno(x) para valores de x comprendidos en el intervalo x0 a x1, con un
incremento h, ingresados en grados sexagesimales.

Debido a que los ángulos se suministran en grados y la computadora trabaja con radianes para
sus funciones trigonométricas, estos valores deben ser previamente transformados para poder
luego aplicarles cualquiera de las funciones seno, coseno o tangente. En el ejemplo se maneja
una variable x que almacena los ángulos en grados y otra xr que los almacena en radianes. La
variable x también se utiliza para recorrer el intervalo de la tabla como se observa en el contador
x = x + h, y para el control de salida del bucle cuando x supera a x1.

Inicio

x0 , x1 , h

x = x0

xr = x * 3.14 / 180

y = SIN(xr)

x,y

x=x+h

x > x1 Si

No Fin

Página 43
Informática

Tablas de funciones con discontinuidades

Ejercicio 5.6:
Tabular la función: y = tg(x) para valores de x comprendidos en el intervalo x0 a x1, con un
incremento h, ingresados en grados sexagesimales.
seno( x)
Se debe salvar la indeterminación teniendo en cuenta que tg ( x) = , por lo tanto, cada
cos eno( x)
vez que encontremos que coseno(x)=0 la función dará un valor ∞. En la computadora se
producirá un error si intentamos calcular el función tg(x) en esos casos, entonces debemos
interceptar el flujo del programa y seleccionar una rama de salida diferente para salvar el error de
cálculo.

Inicio

x0 , x1 , h

x = x0

xr = x * 3.14 / 180

COS(xr) = 0 Si

No

y = TAN(xr)

x,y x , "∞ "

x=x+h

x > x1 Si

No Fin

Página 44
Informática

Ejercicio 5.7:

x2
Tabular la función: y = para valores de x comprendidos en el intervalo x0 a x1, con un
x−2
incremento h.

Inicio

x0 , x1 , h

x = x0

x=2 Si

No

y=x^2/(x-2)

x,y x , "∞ "

x=x+h

x > x1 Si

No Fin

Página 45
Informática

Ejercicio 5.8:
x
 1
Calcular e imprimir los valores de: y = 1 +  para x igual a las sucesivas potencias de 10,
 x
para una cantidad de n valores.

Como menciona el enunciado, los valores de x serán previamente calculados en base a las
sucesivas potencias de 10, es decir que el primer valor de x será 100, luego x tomará el valor de
101, luego 102, y así sucesivamente n veces.

Inicio

c=0

x = 10 ^ c

y=(1+(1/x))^x

x,y

c=c+1

c>n Si

No Fin

Página 46
Informática

Tablas controladas por variables centinela

Ejercicio 5.9:
Efectuar el diagrama de flujo de un programa que permita calcular el promedio de tres notas de
parciales, ingresadas por teclado, de cada alumno de una asignatura, e imprima una tabla con las
tres notas dadas y el promedio calculado de cada uno. El proceso debe terminar cuando las tres
notas ingresadas sean iguales a cero.

Inicio Prueba de escritorio


n1 n2 n3 pr
8 7 4 6.33
n1 , n2 , n3 7 5 5 5.67
7 8 7 7.33
9 8 10 9
0 0 0
n1=0 y n2=0
Si
y n3=0
Salida por pantalla
No
Fin 8 7 4 6.33
7 5 5 5.67
pr = ( n1 + n2 + n3 ) /3 7 8 7 7.33
9 8 10 9

n1 , n2 , n3 , pr

Página 47
Informática

Ejercicios Capítulo 5:
1. Realizar el diagrama de flujo de un proceso que cree una tabla con los cuadrados y los cubos
de los números enteros variando de 0 a N.

2. Realizar el diagrama de flujo de un proceso que cree una tabla de conversión de centímetros a
pulgadas, para un conjunto de medidas dadas en centímetros que varíen entre m1 y m2 con un
incremento h. La fórmula de conversión es la siguiente: 1 pulgada = 2.54 cm

3. Realizar el diagrama de flujo de un proceso que cree una tabla de conversión de grados
Fahrenheit a grados Celsius, para un conjunto de temperaturas que varíen entre t1 y t2 grados
Fahrenheit con un incremento h. La fórmula de conversión es la siguiente:
5
C= ( F − 32)
9

4. Realizar el diagrama de flujo de un proceso que cree una tabla de conversión de velocidades
en km/h a millas/h, para un conjunto de velocidades que varíen entre v1 y v2 km/h con un
incremento h. La fórmula de conversión es la siguiente: 50 millas/h = 80 km/h

5. Realizar el diagrama de flujo que imprima una tabla de valores para la siguiente función, para
valores de x entre –10 y 10 con un incremento igual a 0.5

y = x2 + x +1

6. Realizar el diagrama de flujo de un programa que permita calcular el promedio de tres notas
de cada alumno e imprima una tabla con las tres notas dadas por teclado y el promedio obtenido
mediante el proceso. El proceso debe terminar cuando las tres notas ingresadas sean iguales a
cero.

7. Realizar el diagrama de flujo de un proceso que imprima una tabla de valores de la siguiente
función para valores de x que varían entre x1 y x2, con un incremento h.
x 2 + 12
y=
x2 − 4

8. Realizar el diagrama de flujo de un proceso que imprima una tabla de valores de la siguiente
función para valores de x que varían entre x1 y x2, con un incremento h.
x 2 + 1.22
y=
sen( x)

9. Realizar el diagrama de flujo de un proceso que imprima una tabla de valores de la siguiente
función para valores de x que varían entre x1 y x2, con un incremento h.
y = x 3 + x + 10

Página 48
Informática

Capítulo 6
Problemas matemáticos
Ejercicio 6.1:
Efectuar el diagrama de flujo de un programa que calcule e imprima el factorial de un número n.

Inicio

n Prueba de escritorio:
n c f .
c=n
4 4 1
4
3 12
f=1
2 24
1 24
f=f*c 0

c=c-1
Salida por pantalla
c=0 Si
24

No f

Fin

Ejercicio 6.2:
Efectuar el diagrama de flujo de un programa que calcule e imprima los múltiplos de a, desde m
hasta n.
Inicio

a,m,n

c=m

Resto( c/a ) = 0 Si

c
No

c=c+1

c>n Si

Fin
No

Página 49
Informática

Ejercicio 6.3:
Efectuar el diagrama de flujo de un programa que permita determinar si un número n ingresado
por teclado es primo, y luego imprima la conclusión obtenida.

El procedimiento consiste en ir dividiendo el número n, ingresado por teclado, por los distintos
valores de un contador c comenzando desde n-1 hasta la unidad. Sabemos que un número primo
sólo es divisible por sí mismo y por la unidad, así que si en alguno de los valores intermedios el
resto de la división fuera cero, el número ya no es primo.

Para este ejercicio se utilizará una variable f como bandera. Si el valor de f permanece en cero es
porque la condición nunca fue verdadera, en consecuencia el número n es primo. Al contrario, si
n era divisible por alguno de los valores de c, la condición fue verdadera y provocó que f=1, con
lo cual al final del proceso podemos decir que el número n no es primo.

Inicio
Prueba de escritorio
n f c
n 7 0 6
5
4
f=0 3
2
c=n-1 1

Salida por pantalla


Resto( n/c ) = 0 Si
7 es primo

f=1
No

c=c-1
Prueba de escritorio
n f c
c=1 Si 6 0 5
4
No 3
f=1 Si
1
2
No
1
1
n "es primo" n "no es primo"

Salida por pantalla


6 no es primo
Fin

Página 50
Informática

Capítulo 7
Bucles
Bucle For-Next
Un procedimiento más práctico para controlar variables que deben tomar valores numéricos
entre un valor inicial hasta un valor final, con un incremento determinado, es el siguiente:

donde:
Var = V.I. , V.F. , H Var: Nombre de la variable.
V.I.: Valor inicial que tomará la variable.
V.F.: Valor final que tomará la variable.
H: Incremento.

Si no se especifica un incremento H, el valor por defecto


Var
del incremento es 1. El incremento H también puede ser
negativo, teniendo la precaución de ajustar correctamente
el valor inicial y el valor final de la repetición.
El primer gráfico de este proceso repetitivo declara la variable de conteo que se utilizará para
efectuar la repetición, además declara el valor inicial, el valor final y el salto o incremento que se
adicionará en cada repetición.
El segundo gráfico debe llevar el mismo nombre de la variable que se colocó en el gráfico inicial
y en este punto se ejecutan dos acciones: La primera es el incremento de la variable, y la segunda
es la comparación del nuevo valor almacenado en la variable de conteo con el límite superior o
valor final declarado en el primer gráfico.
Si el valor de la variable de conteo supera o excede el valor final, el flujo seguirá hacia abajo, en
cambio, mientras el valor de la variable de conteo permanezca dentro del intervalo, el flujo
seguirá hacia la izquierda y subirá en busca de una nueva repetición.

Ejemplo 1:

i=1,5 La variable i tomará los siguientes valores:

i = 1, 2, 3, 4, 5, 6

Ejemplo 2:

i=0,7,2
La variable i tomará los siguientes valores:

i = 0, 2, 4, 6, 8

Página 51
Informática

Ejemplo 3:

i = 5 , 0 , -1
La variable i tomará los siguientes valores:

i = 5, 4, 3, 2, 1, 0, -1

Ejemplo 4:

i=1,N La variable i tomará los siguientes valores:

i = 1, 2, 3, 4, …, N, N+1

Ejemplo 5:

c=A,B

La variable c tomará los siguientes valores:

c = A, A+1, A+2, …, B-1, B, B+1

Ejemplo 6:

x = xi , xf , h
La variable x tomará los siguientes valores:

x = xi, xi+h, xi+2h, xi+3h, …, xf-2h, xf-h, xf, xf+h

Este gráfico del diagrama de flujo se puede aplicar en muchos de los programas vistos en los
capítulos 4 y 5, por lo que a continuación se transcribirán esos mismos ejemplos, ahora resueltos
con el bucle For-Next.

Página 52
Informática

Ejercicio 7.1:
Efectuar el diagrama de flujo de un programa que permita calcular e imprimir la suma de los
primeros n números naturales.
Inicio

N c Ac
Ac = 0
4 0 0
1 1
N 2 3
3 6
4 10
c=1,N 5

Salida por pantalla


Ac = Ac + c
Total: 10

"Total" , Ac

Fin

Ejercicio 7.2:
Efectuar el diagrama de flujo de un programa que permita calcular e imprimir los primeros n
números naturales, sus cuadrados y sus cubos.

Inicio
Prueba de escritorio:
n i cuad cubo
N 4
1 1 1
2 4 8
i=1,N
3 9 27
4 16 64
cuad = i ^ 2 5

cubo = i ^ 3 Salida por pantalla


1 1 1
2 4 8
i , cuad , cubo 3 9 27
4 16 64

Fin

Página 53
Informática

Ejercicio 7.3:
Efectuar el diagrama de flujo de un programa que sume los números impares comprendidos en el
intervalo (a,b) e imprima el resultado.

Inicio

Ac = 0
Prueba de escritorio:
a b c i Ac
2 8 0
a,b 3 3 3
5 8
7 15
Resto( a / 2 ) = 0 Si 9

No
Salida por pantalla
c=a c=a+1 Total: 15

i=c,b,2

Ac = Ac + i

"Total" , Ac

Fin

La primera parte del diagrama de flujo se encarga de definir si el valor de a ingresado es par o
impar, almacenando en c entonces el primer valor impar del intervalo. A continuación se utiliza
la variable i como variable de control en el bucle For-Next, la cual va almacenando los valores
impares comprendidos entre c y b, y los acumula en la variable Ac, hasta que el valor de i supere
el valor de b.

Página 54
Informática

Ejercicio 7.4:
Tabular la función: y = a.x2 + b.x + c para valores de x comprendidos en el intervalo xi a xf, con
un incremento h. Imprimir los resultados.

Inicio Prueba de escritorio:


a b c xi xf h x y .
1 3 10 0 3 0.5
a,b,c 0 10
0.5 11.75
1 14
xi , xf , h 1.5 16.75
2 20
x = xi , xf , h
2.5 23.75
3 28
3.5
y=a*x^2+b*x+c
Salida por pantalla
0 10
x,y
0.5 11.75
1 14
1.5 16.75
x ... ...
3 28
Fin

Ejercicio 7.5:
Tabular la función: y = seno(x) para valores de x comprendidos en el intervalo xi a xf, con un
incremento h, ingresados en grados sexagesimales.
Inicio Prueba de escritorio:
xi xf h alfa alfar y .
xi , xf , h 0 20 5
0 0 0
5 0.08727 0.087156
alfa = xi , xf , h 10 0.17453 0.173648
15 0.26180 0.258819
20 0.34907 0.342020
alfar = alfa * 3.1416 / 180
25

y = seno ( alfar ) Salida por pantalla


0 0
alfa , y 5 0.087156
10 0.173648
15 0.258819
20 0.342020
x

Fin

Página 55
Informática

Ejercicio 7.6:
Tabular la función: y = tg(α) para valores de α comprendidos en el intervalo αi a αf, con un
incremento ∆, ingresados en grados sexagesimales.
seno(α )
Se debe salvar la indeterminación teniendo en cuenta que tg (α ) = , por lo tanto, cada
cos eno(α )
vez que encontremos que coseno(α) = 0 la función dará un valor ∞.
En la computadora se producirá un error si intentamos calcular el función tg(α) en esos casos,
entonces debemos interceptar el flujo del programa y seleccionar una rama de salida diferente
para salvar el error de cálculo.

Inicio

alfai , alfaf , delta

alfa = alfai , alfaf , delta

alfar = alfa * 3.1416 / 180

cos ( alfar ) = 0 Si

No

y = tan ( alfar ) alfa , "∞ "

alfa , y

alfa

Fin

Página 56
Informática

Ejercicio 7.7:

x2
Tabular la función: y = para valores de x comprendidos en el intervalo xi a xf, con un
x−2
incremento h.

Inicio

xi , xf , h

x = xi , xf , h

x=2 Si

No

y=x^2/(x-2)
x , "∞ "
x,y

Fin

Como se ve en el ejercicio, en el momento en que x tome el valor 2 se producirá una división por
cero, que en la computadora provocará un error por desbordamiento. Se debe comparar entonces
si x = 2 para poder interceptar esta discontinuidad, imprimiendo un mensaje para luego continuar
la tabla con los próximos valores de x.
En los casos en que no se puede despejar fácilmente la variable en el denominador, es aconseja-
ble preguntar directamente si el denominador es cero: (x – 2) = 0. Esta es una regla general que
permite evitar en todos los casos el error por desbordamiento que produce una división por cero.

Página 57
Informática

Ejercicios Capítulo 7:
1. Realizar el diagrama de flujo de un programa que efectúe la suma de los números pares hasta
200 inclusive, e imprima la suma calculada.

2. Realizar el diagrama de flujo de un programa que determine el menor valor y el mayor valor
de una lista de 25 números leídos desde el teclado. Imprimir los resultados obtenidos.

3. Realizar el diagrama de flujo de un procedimiento que genere 10 números aleatorios entre 1 y


6 inclusive, simulando 10 tiradas de un dado.

4. Realizar el diagrama de flujo de un proceso que calcule e imprima una tabla con los cuadrados
y los cubos de los números enteros variando de 0 a N.

5. Realizar el diagrama de flujo de un programa que calcule e imprima una tabla de valores para
la siguiente función, para valores de x entre –10 y 10 con un incremento igual a 0.5

y = x2 + x +1

6. Realizar el diagrama de flujo de un programa que permita calcular el promedio de tres notas
de cada alumno e imprima una tabla con las tres notas dadas por teclado y el promedio obtenido
mediante el proceso. El proceso debe terminar cuando las tres notas ingresadas sean iguales a
cero.

7. Realizar el diagrama de flujo de un proceso que calcule e imprima una tabla de valores de la
siguiente función, para valores de x que varían entre x1 y x2, con un incremento h.
x 2 + 12
y=
x2 − 4

8. Realizar el diagrama de flujo de un proceso que calcule e imprima una tabla de valores de la
siguiente función, para valores de x que varían entre x1 y x2, con un incremento h.
x 2 + 1.22
y=
sen( x)

9. Realizar el diagrama de flujo de un proceso que calcule e imprima una tabla de valores de la
siguiente función, para valores de x que varían entre x1 y x2, con un incremento h.
y = x 3 + x + 10

Página 58
Informática

Capítulo 8
Estructuras de Datos - Vectores
Introducción. Estructuras de Datos: Arrays
Los datos pueden organizarse en diferentes formas: el modelo matemático o lógico de una
organización particular de datos recibe el nombre de estructura de datos. Una estructura de
datos es, en esencia, una colección de datos. La forma en que están relacionados unos con
otros determina el tipo de estructura. El valor de la estructura de datos se determina por

1. Los valores de los elementos


2. La disposición de los elementos

Las estructuras de datos se clasifican en dos grandes grupos: estáticas y dinámicas.

Las estructuras estáticas son aquellas en las que la dimensión total ocupada en memoria se
declara previamente y no es posible modificarla. Las estructuras dinámicas, como su nombre
lo indica, no tienen un tamaño fijo de memoria, y por lo tanto es posible modificar su tamaño
en memoria mediante variables denominadas punteros.
El Visual Basic soporta dos tipos de estructuras estáticas: arrays y archivos. Los arrays se
clasifican en vectores y matrices. Este capítulo se centra en el tema de los vectores, dejando el
tema de matrices para el capítulo siguiente.
Un array es una colección o conjunto de posiciones de memoria que tienen el mismo nombre
de variable, es decir, un conjunto de datos numéricos o de cadenas alfanuméricas que tienen el
mismo nombre.
Los valores individuales de un array son elementos, y para hacer referencia a ellos se utilizan
subíndices, según las dimensiones del array. Los elementos de los arrays también son
variables y se pueden utilizar en cualquier sentencia o función Visual Basic.

Tipos de Arrays
Los arrays se clasifican atendiendo a sus dimensiones:

• Arrays unidimensionales ( listas o vectores )


• Arrays bidimensionales ( tablas o matrices )
• Arrays multidimensionales

Cada valor de un array se denomina elemento del array. Para acceder a los elementos de un
array se utilizan subíndices numéricos que identifican la posición de un valor dado en el array.
Visual Basic permite definir arrays de cualquier tipo: números o cadenas alfanuméricas. Los
arrays numéricos pueden ser de cualquier tipo numérico: enteros, enteros largos, simple
precisión o doble precisión.

Los vectores: arrays unidimensionales


Un array unidimensional o lineal – también denominado lista o vector – es una lista de un
número finito de datos (elementos) del mismo tipo, que se referencian por un nombre común
y un número de orden (subíndice) y que son consecutivos normalmente, 1, 2, 3, ... n.
Las variables que representan los arrays se denominan variables de subíndice (“subscripted

Página 59
Informática

variables”). Cada elemento puede tener asignado un valor y se puede manipular de igual
forma que cualquier otra variable.
La dimensión de un vector es el número de elementos que componen el vector. En el caso de
un vector de nombre A y que conste de n elementos, se representa por alguna de las siguientes
notaciones:

a1, a2, a3, . . . , an


A(1), A(2), A(3), . . . , A(n)
A[1], A[2], A[3], . . . , A[n]

En Visual Basic la notación que se debe utilizar en los programas es:

A(1), A(2), A(3), . . . , A(i), . . . , A(n)

donde A es el nombre del vector y 1, 2, 3, i, …, n, es el subíndice o índice de cada elemento


del vector.

Una variable de subíndice tiene el formato general

variable ( subíndice )

en el que variable es un nombre de variable y puede ser numérica o de cadena. El subíndice es


cualquier constante numérica positiva, variable o expresión matemática que resulte en un
valor positivo, y se utiliza para especificar qué elemento de la variable se utiliza. Por ejemplo:

A(7) el elemento 7 de A( ); 7 es el subíndice


TJ(42) el elemento 42 de TJ( ); 42 es el subíndice
F$(18) el elemento 18 de F$( ); 18 es el subíndice

Así pues, las características de un vector en Visual Basic son:

• Todos los elementos son del mismo tipo (numérico o cadena).


• El vector tiene un nombre único y los elementos están ordenados de acuerdo al subíndice.

Al momento de comenzar la ejecución de un programa, los elementos de los vectores tienen el


valor cero en el caso de vectores numéricos y de cadena nula en el caso de vectores de cadena.
Los vectores se suelen representar en forma de listas.
Si los elementos de los vectores ya tienen valores almacenados, un sistema de representación
típico puede ser el de la figura siguiente como ejemplo.

Vectores numéricos:
Numero( )
1 2 3 4 5 6 7 8
4 51 32 -14 25 6 7 14

Numero( )
Numero(1) Numero(2) Numero(3) Numero(4) Numero(5) Numero(6) Numero(7) Numero(8)

4 51 32 -14 25 6 7 14

Página 60
Informática

Numero( )
Numero(1) 4
Numero(2) 51
Numero(3) 32
Numero(4) -14
Numero(5) 25
Numero(6) 6
Numero(7) 7
Numero(8) 14

Vectores de cadena:
Nombre$( )
1 2 3 4 5 6
Luis Francisco José Antonio Luis Marcos

Nombre$( )
Nombre$(1) Nombre$(2) Nombre$(3) Nombre$(4) Nombre$(5) Nombre$(6)

Luis Francisco José Antonio Luis Marcos

Nombre$( )
Nombre$(1) Luis
Nombre$(2) Francisco
Nombre$(3) José
Nombre$(4) Antonio
Nombre$(5) Luis
Nombre$(6) Marcos

A lo largo de todo el capítulo el paréntesis después del nombre de una variable estará indican-
do que se hace referencia a un vector en lugar de a una variable escalar. Es decir, Total( ) es el
vector de nombre Total.

Operaciones con vectores


En Visual Basic la sentencia Dim inicializa automáticamente el valor de cada elemento del
vector. Los elementos numéricos enteros y reales de un vector numérico se inicializan a cero;
los elementos de cadena se inicializan a cadena nula (“”). Dado que las variables de subíndice
se tratarán en los procedimientos de este capítulo, será preciso conocer el modo de realizar las
operaciones básicas, para asignación de valores, y lectura o escritura de los vectores.

Página 61
Informática

Ingreso de datos
Existen tres métodos para almacenar valores en un vector: sentencia de asignación, sentencia
de entrada de datos por teclado y sentencia de transferencia de datos desde la hoja de cálculo.
Supongamos que se desean almacenar los doce valores correspondientes a los elementos del
vector A( ).

Primer método: Sentencias de asignación directa

Dim A(12) as Single A(1) = 4.25

A(2) = 3.50
A(1) = 4.25
A(2) = 3.50 A(3) = 2.50

A(3) = 2.50 A(4) = 5


A(4) = 5
A(5) = 4.25 A(5) = 4.25

...
A(12) = 22.05 A(12) = 22.05

Segundo método: Ingreso de valores a través del teclado


A(1)

A(2)
Dim A(12) as Single
A(3)
A(1) = InputBox (“Ingrese un valor”)
A(2) = InputBox (“Ingrese un valor”) A(4)
A(3) = InputBox (“Ingrese un valor”)
A(4) = InputBox (“Ingrese un valor”)
A(5)
...
A(12) = InputBox (“Ingrese un valor”)
A(12)

Tercer método: Transferencia de datos desde las celdas de la hoja activa


de Excel A(1)

A(2)

Dim A(12) as Single


A(3)
A(1) = ActiveSheet.Cells(1, 1).Value
A(2) = ActiveSheet.Cells(2, 1).Value A(4)
A(3) = ActiveSheet.Cells(3, 1).Value
A(4) = ActiveSheet.Cells(4, 1).Value A(5)
...
A(12) = ActiveSheet.Cells(12, 1).Value
A(12)

Página 62
Informática

Las asignaciones de datos efectuadas con los procedimientos anteriores puede resultar útil si
el número de elementos es pequeño, porque en caso de ser elevado, estos procedimientos son
tediosos y largos de escribir. Para ello, el mejor sistema es utilizar estructuras repetitivas.
El ejemplo anterior se puede reemplazar con una estructura For-Next y la sentencia de entrada
de datos adecuada.

Dim A(12) j=1,12


For j = 1 To 12
A(j)
A(j) = InputBox (“Ingrese un valor”)
Next j j

Salida o escritura de la información


Existen varios métodos para visualizar la información almacenada en un vector. En esta etapa
del aprendizaje se verán los dos métodos más utilizados: sentencia de salida a un cuadro de
mensaje y sentencias de transferencia a la hoja de cálculo.
La salida o escritura en pantalla de los resultados se puede realizar también mediante un bucle
repetitivo.

j=1,12
For j = 1 To 12
MsgBox (A(j)) A(j)

Next j j

Una codificación más depurada y comprensible del ejemplo anterior sería:

Inicio
Dim A(12)
For j = 1 To 12 j=1,12

Mensaje$ = "Ingrese el valor de A(" + Str$(j) + ")"


A(j)
A(j) = InputBox(Mensaje$)
j
Next j
For j = 1 To 12 j=1,12

Mensaje$ = "El valor de A(" + Str$(j) + ") es " + Str$(A(j))


A(j)
MsgBox (Mensaje$)
j
Next j
Fin

Página 63
Informática

En estas líneas se agregan mensajes que permiten comprender mejor los datos a ingresar y los
resultados que se están visualizando. Cuando la salida de datos se desea direccionar a las cel-
das de una hoja de cálculo, se podría codificar de esta manera:
Inicio
Dim A(12)
j=1,12
For j = 1 To 12
Mensaje$ = "Ingrese el valor de A(" + Str$(j) + ")" A(j)

A(j) = InputBox(Mensaje$)
j
Next j
j=1,12
For j = 1 To 12
ActiveSheet.Cells(j, 1).Value = A(j) A(j)

Next j
j

Fin

Procesamiento de los datos


Además de las operaciones ya analizadas de entrada de datos y salida de información con los
vectores, se pueden realizar operaciones típicas de programación como sumas, restas, iniciali-
zación, y otras fórmulas o funciones. En esta sección se incluyen ejemplos con aplicaciones
prácticas de programación.

Ejemplo 1: Inicialización de un vector P( ) con valores nulos.

Las siguientes sentencias ponen todos los elementos del vector P( ) a un valor igual a cero.

k = 1,15
For k = 1 To 15
P(k) = 0
P(k) = 0
Next k
k

Ejemplo 2: Crear un vector X2( ) igual a otro X1( ) dado.

j = 1,15
For j = 1 To 15
X2(j) = X1(j)
X2(j) = X1(j)
Next j
j

Página 64
Informática

Ejemplo 3: Sumar todos los elementos de un vector P( ).


Suma = 0
Suma = 0
For i = 1 To 20 i = 1,20
Suma = Suma + P(i)
Next i Suma = Suma +P(i)

Ejemplo 4: Sumar dos vectores A( ) y B( ), y almacenar los resultados en otro vector C( ).

j = 1,20
For j = 1 To 20
C(j) = A(j) + B(j)
C(j) = A(j) + B(j)
Next j
j

Ejercicio 8.1:
Hacer el diagrama de flujo y la codificación de un programa que permita introducir un vector
A( ) de n elementos a través del teclado, y luego lo imprima por pantalla.

Inicio
Sub Ejercicio_8_1 ( )

n
Dim n as Integer
Dim i as Integer
i=1,n Dim A( ) as Single
n = InputBox (“Ingrese dimensión del vector”)
A(i) Redim A(n) as Single
For i = 1 To n
i
A(i) = InputBox (“Ingrese un elemento del vector”)
i=1,n Next i
For i = 1 To n
A(i) MsgBox (A(i))
Next i
i End Sub

Fin

Página 65
Informática

Ejercicio 8.2:
Hacer el diagrama de flujo y la codificación de un programa que permita cargar un vector A( )
por teclado, de n elementos, lo multiplique por una constante k, y almacene los resultados en
otro vector B( ). Imprimir el vector B( ) resultante.

Inicio
Sub Ejercicio_8_2 ( )
n Dim i as Integer, n as Integer
Dim k as Single
i=1,n Dim A( ) as Single, B( ) as Single
n = InputBox (“Ingrese dimensión del vector”)
A(i) Redim A(n) as Single, B(n) as Single
For i = 1 To n
i
A(i) = InputBox (“Ingrese un elemento del vector A”)
Next i
k
k = InputBox (“Ingrese el escalar k”)
i=1,n
For i = 1 To n
B(i) = k * A(i)
B(i)=k*A(i)
Next i
i For i = 1 To n
MsgBox (B(i))
i=1,n
Next i

B(i)
End Sub

Fin

En la página siguiente haremos una prueba de escritorio utilizando como referencia los
siguientes valores:

A( ) k
12.30 7.63 3.66 8.42 3

B( )
36.90 22.89 10.98 25.26

Página 66
Informática

Prueba de escritorio:
n i A( ) k B( ) Cálculos auxiliares .
4
1 A(1) = 12.30
2 A(2) = 7.63
3 A(3) = 3.66
4 A(4) = 8.42
5
3
1 B(1) = 36.90 B(1) = k * A(1) = 3 * 12.30
2 B(2) = 22.89 B(2) = k * A(2) = 3 * 7.63
3 B(3) = 10.98 B(3) = k * A(3) = 3 * 3.66
4 B(4) = 25.26 B(4) = k * A(4) = 3 * 8.42
5

1
2
3
4
5

Salida por pantalla

36.90
22.89
10.98
25.26

Página 67
Informática

Ejercicio 8.3:
Hacer el diagrama de flujo y la codificación de un programa que calcule la resta de dos vec-
tores A( ) y B( ), de n elementos cada uno, leídos desde las celdas de una planilla de cálculo
Excel, almacenando el resultado en otro vector C( ) e imprimiendo el vector C( ) resultante en
otra columna de la planilla de cálculo.

Inicio
Sub Ejercicio_8_3 ( )
n Dim i as Integer, n as Integer
Dim A( ) as Single, B( ) as Single
i=1,n Dim C( ) as Single
n = InputBox (“Ingrese dimensión de los vectores”)
A(i)
Redim A(n) as Single, B(n) as Single
Redim C(n) as Single
i
For i = 1 To n
i=1,n
A(i) = Cells(i,1).Value
Next i
B(i)
For i = 1 To n
B(i) = Cells(i,2).Value
i
Next i
i=1,n For i = 1 To n
C(i) = A(i) – B(i)
C(i)=A(i)-B(i)
Next i
i For i = 1 To n
Cells(i,3).Value = C(i)
i=1,n
Next i
End Sub
C(i)

Fin

Página 68
Informática

Prueba de escritorio:
n i A( ) B( ) C( ) Cálculos auxiliares .
4
1 A(1) = 6
2 A(2) = 7
3 A(3) = 3
4 A(4) = 8
5

1 B(1) = 3
2 B(2) = 2
3 B(3) = 1
4 B(4) = 2
5

1 C(1) = 3 C(1) = A(1) – B(1) = 6 – 3


2 C(2) = 5 C(2) = A(2) – B(2) = 7 – 2
3 C(3) = 2 C(3) = A(3) – B(3) = 3 – 1
4 C(4) = 6 C(4) = A(4) – B(4) = 8 – 2
5

1
2
3
4
5

Salida por pantalla

C(1) = 3
C(2) = 5
C(3) = 2
C(4) = 6

Página 69
Informática

Ejercicio 8.4:
Hacer el diagrama de flujo y la codificación de un programa que calcule e imprima el produc-
to escalar de dos vectores A( ) y B( ) de n elementos. Imprimir el producto escalar obtenido.

n
Pe = ∑ a i .bi = a1 .b1 + a 2 .b2 + a 3 .b3 + ... + a n .bn
i =1

Inicio
Sub Ejercicio_8_4 ( )
n Dim i as Integer, n as Integer
Dim A( ) as Single, B( ) as Single
i=1,n Dim Pe as Single
n = InputBox (“Ingrese dimensión de los vectores”)
A(i) Redim A(n) as Single, B(n) as Single
For i = 1 To n
i
A(i) = Cells(i,1).Value
Next i
i=1,n

For i = 1 To n
B(i) B(i) = Cells(i,2).Value
Next i
i Pe = 0

Pe = 0 For i = 1 To n
Pe = Pe + A(i) * B(i)
i=1,n
Next i

Pe = Pe + A ( i ) * B ( i ) Mensaje$ = “El producto escalar es” + Str$(Pe)


MsgBox (Mensaje$)
i
End Sub

Pe

Fin

A continuación hacemos un ejemplo de una prueba de escritorio con dos vectores A( ) y B( ),


de 4 elementos, observando los valores que toman las distintas variables.

Página 70
Informática

Prueba de escritorio:
n i A( ) B( ) PE Cálculos auxiliares .
4
1 A(1) = 1.75
2 A(2) = 7.26
3 A(3) = 3.40
4 A(4) = 5.42
5

1 B(1) = 2.95
2 B(2) = 4.28
3 B(3) = 3.10
4 B(4) = 5.75
5
0

1 5.1625 PE = PE + A(1) * B(1)


2 36.2353 PE = PE + A(2) * B(2)
3 46.7753 PE = PE + A(3) * B(3)
4 77.9403 PE = PE + A(4) * B(4)
5

Salida por pantalla

El producto escalar es 77.9403

Página 71
Informática

Ejercicio 8.5:
Hacer el diagrama de flujo y la codificación de un programa que calcule el valor de un polino-
mio Pn(x), de grado n, para un valor de x ingresado por teclado. Imprimir el valor obtenido.

Pn ( x ) = a n . x n + a n −1 . x n −1 + ... + a3 . x 3 + a 2 . x 2 + a1 . x + a 0

Inicio Sub Ejercicio_8_5 ( )


Dim n as Integer, i as Integer
n
Dim x as Single, y as Single
Dim a( ) as Single
i = n , 0 , -1
n = InputBox (“Ingrese grado del polinomio”)

a(i)
Redim a(n) as Single
For i = n To 0 Step -1
i a(i) = InputBox (“Coeficiente del polinomio”)
Next i
x
x = InputBox (“Ingrese valor de la variable x”)

y=0 y=0
For i = n To 0 Step -1
i = n , 0 , -1
y = y + a(i) * x ^ i
y=y+a(i)*x^i Next i
MsgBox (“x = ” + Str$(x) + “ y = ” + Str$(y))
i
End Sub
x,y

Fin

Si trabajamos con el polinomio Pn ( x ) = 0.25 ⋅ x 3 + 1.75 ⋅ x 2 − 0.7 ⋅ x + 2 y tomamos un valor de


x = 0.80, la disposición en la memoria de las variables principales quedaría como se presenta
a continuación:
A( ) x y
2 – 0.7 1.75 0.25 0.80 2.688
A(0) A(1) A(2) A(3)

Además de estas variables es importante notar en la prueba de escritorio los valores que toma
la variable i cuando se carga el vector A( ) de coeficientes del polinomio, y luego los valores
que toma la variable i cuando se lo calcula con el valor de x = 0.8.

Página 72
Informática

Prueba de escritorio:
n i A( ) x y Cálculos auxiliares .
3
3 A(3) = 0.25
2 A(2) = 1.75
1 A(1) = – 0.7
0 A(0) = 2
-1
0.8
0
3 0.128 y = y + A(3) * x3 = 0 + 0.25 * 0.83
2 1.248 y = y + A(2) * x2 = 0.128 + 1.75 * 0.82
1 0.688 y = y + A(1) * x1 = 1.248 – 0.7 * 0.81
0 2.688 y = y + A(0) * x0 = 0.688 + 2 * 0.80
-1

Salida por pantalla

0.8 2.688

Trabajando ahora con el mismo polinomio y un valor de x = 1.2 tendremos la siguiente


prueba de escritorio:

Prueba de escritorio:
n i A( ) x y Cálculos auxiliares .
3
3 A(3) = 0.25
2 A(2) = 1.75
1 A(1) = – 0.7
0 A(0) = 2
-1
1.2
0
3 0.432 y = y + A(3) * x3 = 0 + 0.25 * 1.23
2 2.952 y = y + A(2) * x2 = 0.432 + 1.75 * 1.22
1 2.112 y = y + A(1) * x1 = 2.952 – 0.7 * 1.21
0 4.112 y = y + A(0) * x0 = 2.112 + 2 * 1.20
-1

Salida por pantalla

1.2 4.112

Página 73
Informática

Ejercicio 8.6:
Hacer el diagrama de flujo y la codificación de un programa que calcule e imprima una tabla,
con los valores de un polinomio Pn(x), de grado n, para valores de x comprendidos en el inter-
valo de xi a xf, con un incremento h.

Pn ( x ) = a n . x n + a n −1 . x n −1 + ... + a3 . x 3 + a 2 . x 2 + a1 . x + a 0

Inicio Sub Ejercicio_8_6 ( )


Dim xi as Single, xf as Single, h as Single
xi , xf , h Dim x as Single, y as Single
Dim n as Integer, i as Integer, fila as Integer
n Dim a( ) as Single
xi = InputBox (“Ingrese valor inicial xi:”)
i = n , 0 , -1
xf = InputBox (“Ingrese valor final xf:”)
h = InputBox (“Ingrese incremento h:”)
a(i)
n = InputBox (“Ingrese grado n del polinomio”)

i
Redim a(n) as Single
For i = n To 0 Step -1
x = xi , xf , h
a(i) = InputBox (“Coeficiente del polinomio”)
Next i
y=0
fila = 0
i = n , 0 , -1
For x = xi To xf Step h
y=0
y=y+a(i)*x^i
For i = n To 0 Step -1
i y = y + a(i) * x ^ i
Next i
x,y fila = fila + 1
Cells (fila,1).Value = x
x Cells (fila,2).Value = y

Fin
Next x
End Sub

Página 74
Informática

Ejercicio 8.7:
Hacer el diagrama de flujo y la codificación de un programa que determine el menor valor
almacenado en un vector A( ) de n elementos, y la posición que ocupa dicho valor. Imprimir
los resultados obtenidos.

Inicio
Sub Ejercicio_8_7 ( )

n Dim n as Integer, i as Integer


Dim A( ) as Single
i=1,n
Dim Menor as Single, Posicion as Integer

A(i) n = InputBox (“Ingrese la cantidad de elementos n”)


Redim A(n) as Single
i
For i = 1 To n
Menor = A ( 1 ) A(i) = InputBox (“Ingrese elemento del vector A( )”)
Next i
Posicion = 1
Menor = A(1)
i=1,n Posicion = 1

For i = 1 To n
A ( i ) < Menor Si
If A(i) < Menor Then
Menor = A ( i )
Menor = A(i)
No
Posicion = i Posicion = i
End If
i
Next i
"Menor =" , Menor MsgBox (“Menor = ” + Str$(Menor))
"Posición =" , Posicion
MsgBox (“Posición = ” + Str$(Posicion))
End Sub
Fin

Página 75
Informática

Ejercicio 8.8:
Hacer el diagrama de flujo y la codificación de un programa que ordene de menor a mayor los
valores almacenados en un vector A( ), de n elementos. Imprimir el vector A( ) ordenado.

Inicio

Sub Ejercicio_8_8 ( )
n
Dim n as Integer, i as Integer
Dim A( ) as Single
i=1,n
n = InputBox (“Ingrese la cantidad de elementos n”)
A(i) Redim A(n) as Single

i For i = 1 To n
A(i) = Cells ( i , 1 ) . Value
p=1,n-1 Next i

i=p+1,n For p = 1 To n – 1

For i = p + 1 To n
A(p)>A(i) Si
If A(p) > A(i) Then
aux = A ( i )
aux = A(i)
A(i)=A(p) A(i) = A(p)
No

A ( p ) = aux
A(P) = aux
End If

i Next i
Next p
p
For i = 1 To n
i=1,n
Cells ( i , 2 ) . Value = A(i)
Next i
A(i)
End Sub

Fin

Página 76
Informática

El método de ordenamiento por burbuja desarrolla un procedimiento que efectúa varias pasa-
das p por los elementos del vector, ordenando en cada una de ellas una posición dada en dicho
vector. Es decir, en la primera pasada, p = 1, se ordena el menor elemento en la posición 1, en
la segunda pasada, p = 2, se ordena el menor elemento restante en la segunda posición, y así
se continúa ordenando en cada pasada la posición p.
En el esquema que se presenta a continuación se pueden observar las distintas pasadas p y la
posición que se va ordenando, la cual está sombreada en gris. En la pasada p = 4 se ordena la
posición 4, y al estar ordenadas las cuatro posiciones superiores, la última posición quedará
entonces ordenada también.

A( ) inicial p=1 p=2 p=3 p=4


10 1 1 1 1
5 10 3 3 3
3 5 10 5 5
8 8 8 10 8
1 3 5 8 10

Prueba de escritorio:
n p i A( ) p aux Cálculos auxiliares .
5
1 A(1) = 10
2 A(2) = 5
3 A(3) = 3
4 A(4) = 8
5 A(5) = 1
6
1
2 A(1) > A(2) ?
5
A(2) = 10
A(1) = 5
3 A(1) > A(3) ?
3
A(3) = 5
A(1) = 3
4 A(1) > A(4) ?
5 A(1) > A(5) ?
1
A(5) = 3
A(1) = 1
6
2
3 A(2) > A(3) ?
5
A(3) = 10
A(2) = 5
4 A(2) > A(4) ?
5 A(2) > A(5) ?

Página 77
Informática

n p i A( ) p aux Cálculos auxiliares .


3
A(5) = 5
A(2) = 3
6
3
4 A(3) > A(4) ?
8
A(4) = 10
A(3) = 8
5 A(3) > A(5) ?
5
A(5) = 8
A(3) = 5
6
4
5 A(4) > A(5) ?
8
A(5) = 10
A(4) = 8
6

Salida por pantalla

A(1) = 1
A(2) = 3
A(3) = 5
A(4) = 8
A(5) = 10

Página 78
Informática

Ejercicio 8.9:
Escribir un programa que permita introducir y almacenar en un vector los nombres de las si-
guientes provincias: Formosa, Chaco, Santa Fe, Corrientes, Misiones y Entre Ríos.

Inicio Sub Ejercicio_8_9 ( )


Dim Provincia$(6)
i = 1,6
For i = 1 To 6
Provincia$(i) Provincia$(i) = InputBox (“Ingrese el nombre de una provincia”)
Next i
i

End Sub
Fin

Ejercicio 8.10:
Modificar el Ejercicio 8.9 para imprimir la lista de nombres de las provincias en orden inverso
al ingresado.

Inicio Sub Ejercicio_8_10 ( )


Dim Provincia$(6)
i = 1,6

For i = 1 To 6
Provincia$(i) Provincia$(i) = InputBox (“Ingrese el nombre de una provincia”)
Next i
i

For i = 6 To 1 Step –1
i = 6,1,-1
MsgBox (Provincia$(i))
Provincia$(i)
Next i
End Sub
i

Fin

Página 79
Informática

Ejercicio 8.11:
Se desea llenar un vector de 100 elementos con nombres de personas, con la salvedad de que
el proceso puede terminar cuando se introduzca un asterisco (*), lo que puede suceder antes
de haber leído los 100 nombres. Se debe imprimir el número de los elementos leídos así como
todos los nombres.
Inicio
Sub Ejercicio_8_11 ( )
Cuenta = 0 Dim Nombre$(1 To 100)
MsgBox (“Introducir nombres, un nombre por línea”)
Respuesta$
MsgBox (“Introducir un asterisco para terminar”)
Cuenta = 0
Respuesta$ <> "*" Si

Do
Cuenta = Cuenta + 1
Respuesta$ = InputBox (“Introducir un nombre”)
No
Nombre$(Cuenta) = Respuesta$
If Respuesta$ <> “*” Then
Cuenta = Cuenta + 1
Respuesta$ = "*" Nombre$(Cuenta) = Respuesta$
o
Cuenta >= 100 End If
Si
No
Loop Until (Respuesta$=”*”) or (Cuenta >= 100)
Cuenta MsgBox (“Cantidad de nombres = ” + Str$(Cuenta))
For i = 1 To Cuenta
i = 1,Cuenta
MsgBox (Nombre$(i))
Next i
Nombre$(i)
End Sub
i

Fin

Página 80
Informática

Ejercicio 8.12:
Se dispone de n temperaturas. Se desea calcular su media y determinar cuántas son superiores
o iguales a la media.
Se precisa, en primer lugar, leer los datos, almacenarlos en un vector y determinar la media. A
continuación se debe comparar cada uno de los valores con la media. Los datos se van a al-
macenar en un vector Temp( ).

Inicio Sub Ejercicio_8_12 ( )


Dim N As Single
Suma = 0
Suma = 0
N N = InputBox (“Ingrese la cantidad de temperaturas”)
ReDim Temp(N) As Single
j = 1,N
For j = 1 To N
Temp(j)
Mensaje$ = “Ingrese la temperatura nro ” + Str$(j)
Temp(j) = InputBox (Mensaje$)
Suma = Suma + Temp(j) Suma = Suma + Temp(j)
Next j
j
Media = Suma / N
Media = Suma / N C=0
For j = 1 To N
C=0
If Temp(j) > Media Then
j = 1,N
C=C+1
MsgBox (Temp(j))
Temp(j) > Media Si
End If
C=C+1
Next j
No
Temp(j) Mensaje$ = “La temperatura media es ” + Str$(Media)
MsgBox (Mensaje$)
i Mensaje$ = “La cantidad de temperaturas mayores a la
media es ” + Str$(C)
Media
MsgBox (Mensaje$)

C
End Sub

Fin

Página 81
Informática

Listas o vectores paralelos


En muchas aplicaciones es conveniente utilizar diferentes listas o vectores que contengan
información relacionada entre sí. Las listas o vectores que contienen el mismo número de
elementos y cuyos valores están relacionados entre sí por el mismo subíndice se denominan
vectores paralelos.

Algunos ejemplos de vectores paralelos pueden ser:

Ejemplo 1: Lista de 50 alumnos de una clase y sus notas de la asignatura

Nombre$( ) Notas( )

Ejemplo 2: Lista de talones correspondientes al talonario de cheques de una persona, cheque


expedido, cantidad pagada y persona a pagar.

Numero( ) Cantidad( ) Persona$( )

Los arrays paralelos presentan la ventaja de que sus elementos se referencian por los mismos
subíndices.

Ejemplo:

NumeroCheques = 50

ReDim Numero ( NumeroCheques ) as Single


ReDim Cantidad ( NumeroCheques ) as Single
ReDim Persona$ ( NumeroCheques )

Aunque existen tres arrays independientes, todos tienen índices relacionados, de modo que
cada elemento de un array se refiere al mismo elemento del otro array. Los arrays paralelos
presentan la ventaja de poder utilizar la misma variable de control para acceder a elementos
homólogos.

For i = 1 to NumeroCheques i = 1,NroCheques

Numero(i) = InputBox (“Numero de cheque”) Numero(i),


Cantidad(i) = InputBox (“Cantidad a pagar”) Cantidad(i),
Persona$(i)
Persona$(i) = InputBox (“Nombre de la persona”)

Next i i

Página 82
Informática

Ejercicios Capítulo 8:
1. Realizar el diagrama de flujo y la codificación de un programa que defina un vector A( )
con 200 elementos, permita su ingreso por teclado y por último imprima todos los elementos
del vector A( ).

2. Realizar el diagrama de flujo y la codificación de un programa que defina un vector A( ) de


1000 elementos, y almacene los siguientes valores en los elementos del vector:
A(1) = 2 , A(2) = 4 , A(3) = 6 , ...

3. Realizar el diagrama de flujo y la codificación de un programa que defina un vector Mes$()


de 12 elementos, y permita cargar por teclado la siguiente tabla de valores:
Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic
El programa debe imprimir al final el vector Mes$( ) en orden inverso.

4. Realizar el diagrama de flujo y la codificación de un programa que permita el ingreso de 2


vectores A( ) y B( ) de n elementos, intercambie los valores almacenados en los vectores A( )
y B( ), y luego imprima los vectores modificados.

5. El vector V( ) almacena los siguientes valores en sus ocho elementos.


V( )
7 4 9 2 3 8 6 1
V(1) V(2) V(3) V(4) V(5) V(6) V(7) V(8)

Suponiendo que j=3, k=4, l=6, ¿Qué valor almacena la variable A cuando se ejecutan las si-
guientes operaciones?
a) A = V(j) – V(k)
b) A = V(l) – V(k-j)
c) A = V(k) – V(j+k)

6. Hacer el diagrama de flujo correspondiente y determinar qué salida por pantalla produce el
siguiente programa en Visual Basic.
Dim B(5) as Integer
For j = 1 To 5
B(j) = InputBox (“Introduzca un número”)
Next j
For j = 5 To 1 Step –1
MsgBox (B(j))
Next j
si se ingresan los siguientes valores por teclado 5, 12, 6, 9 y 2.

7. Realizar el diagrama de flujo y la codificación de un programa que defina un vector A( )


con 15 elementos, permita el ingreso por teclado de dichos elementos y luego sume 1 a cada
elemento de A( ).

8. Realizar el diagrama de flujo y la codificación de un programa que calcule la suma de los n


elementos de un vector V( ), almacenando el resultado en una variable S. Imprimir el valor S.

Página 83
Informática

9. Realizar el diagrama de flujo y la codificación de un programa que calcule la suma de los n


elementos de 2 vectores A( ) y B( ) almacenando los resultados en un vector suma C( ) tam-
bién de n elementos. Imprimir los valores del vector C( ).

10. Realizar el diagrama de flujo y la codificación de un programa que transforme los datos de
un vector V( ) de n elementos, adicionándoles una constante k y almacenando los resultados
en el mismo vector V( ). Imprimir los resultados obtenidos.

11. Realizar el diagrama de flujo y la codificación de un programa que resuelva el siguiente


problema: Se dispone de n temperaturas, medidas en una estación climatológica de la ciudad
de Resistencia, almacenadas en un vector T( ), y se desea calcular su promedio, determinar
entre todas ellas cuáles son superiores a esa media, e imprimir los resultados obtenidos.

12. Realizar el diagrama de flujo y la codificación de un programa que resuelva el siguiente


problema: Dado un vector M( ) de n elementos, que almacena números positivos y negativos,
obtener otro vector P( ) que contenga sólo los números positivos. Imprimir los dos vectores.
Ejemplo: M( )
-15 44 -13 67 -26 -81 91 25
P( )
44 67 91 25

13. Realizar el diagrama de flujo y la codificación de un programa que permita separar en un


vector P( ) los valores positivos y en otro vector S( ) los valores negativos provenientes de un
vector M( ) de n elementos, que contiene números positivos y negativos. Imprimir los tres
vectores.
Ejemplo: M( )
34 -10 13 67 12 -16 10 -91 25
P( ) S( )
34 13 67 12 10 25 -10 -16 -91

14. Realizar el diagrama de flujo y la codificación de un programa que resuelva el siguiente


problema: Dado un vector T( ) de n elementos, que contiene números positivos y negativos,
obtener otro vector Pos( ) que contenga sólo las posiciones donde se encuentran los números
positivos. Imprimir los dos vectores.
Ejemplo: T( )
15 -12 83 67 -26 -81 91 -34
Pos( )
1 3 4 7

15. Realizar el diagrama de flujo y la codificación de un programa que permita detectar la


cantidad de números iguales entre dos vectores A( ) y B( ), de 5 elementos cada uno, teniendo
en cuenta que los números no se repiten dentro de cada vector. Imprimir la cantidad de coinci-
dencias hallada.
Ejemplo: A( ) B( )
2 3 5 17 22 5 6 7 22 40
Respuesta: Coincidencias = 2

Página 84
Informática

Capítulo 9
Estructuras de Datos - Matrices
Matrices: arrays de dos dimensiones
Un array de dos dimensiones, denominado también matriz, es una variable con filas y colum-
nas, que se identifica con un nombre válido, y cuyos elementos se referencian por dos sub-
índices, uno para la fila y otro para la columna. Así, una matriz de 4 filas y 6 columnas se
representa:

B( ) columna 1 columna 2 columna 3 columna 4 columna 5 columna 6


fila 1 3 4 6 7 -1 0
fila 2 14 20 16 8 9 4
fila 3 0 4 5 -6 3 8
fila 4 4 3 2 1 0 -1

El diagrama anterior representa una matriz con 4 filas y 6 columnas, de 24 elementos, y de


nombre B( ). Los elementos de una matriz se referencian con un subíndice para la fila y otro
para la columna, como por ejemplo:
B(2,5) elemento correspondiente a la segunda fila y quinta columna: su valor es 9
B(3,3) elemento correspondiente a la tercera fila y tercera columna: su valor es 5

Arrays multidimensionales
Visual Basic permite arrays de hasta un máximo de 60 dimensiones, aunque es difícil trabajar
imaginar, y representar arrays con más de tres dimensiones.
Una matriz de tres dimensiones A(i,j,k) se puede representar por un paralelepípedo o un cubo.
Así, por ejemplo, la matriz T(3,2,5) se representa:

La mayoría de las aplicaciones no utilizan arrays con más de tres dimensiones, posiblemente
porque visualizar más de tres dimensiones parece demasiado abstracto.

Página 85
Informática

Arrays estáticos y dinámicos


En Visual Basic se pueden definir arrays estáticos y dinámicos. Esta clasificación se realiza
en función del almacenamiento en memoria de dichos arrays. El almacenamiento o espacio
ocupado en memoria por un array se puede establecer cuando el programa se está compilando
o cuando el programa se está ejecutando. El dimensionado de un array como estático (Static)
se realiza en la compilación, mientras que el dimensionado dinámico (Dynamic) se realiza en
la ejecución del programa.
El tamaño de un array estático se fija cuando se compila su programa y permanece inalterado
cuando se ejecuta el programa. El tamaño de un array dinámico, sin embargo, no se define
hasta que se utiliza realmente el array durante la ejecución del programa. Por consiguiente, las
dimensiones de un array dinámico se pueden modificar una o más veces durante la ejecución
de un programa.
Los arrays estáticos se dimensionan solamente con constantes numéricas enteras positivas,
mientras que los arrays dinámicos se dimensionan con variables enteras positivas.

Arrays estáticos
Para declarar un array como estático, se deben utilizar constantes enteras positivas como
subíndices dentro de la sentencia DIM.

Dim Impuestos(4,5) matriz de dos dimensiones de 4 filas y 5 columnas = 20 elementos.

Si se define un array como estático no se puede redimensionar más tarde en el programa. Los
programas con arrays estáticos aumentan su velocidad, ya que Visual Basic necesita menos
memoria para su almacenamiento y por consiguiente se pueden procesar más rápido.

Arrays dinámicos
Para definir arrays como dinámicos, se deben utilizar variables enteras positivas como subín-
dices dentro de la sentencia REDIM. Estos arrays se definen cuando se ejecuta la sentencia
REDIM.

ReDim Precio(ultimo) Array de una dimensión, simple precisión con elementos


desde Precio(0) hasta Precio(ultimo)

ReDim Notas(1 To Fin) Array de una dimensión, simple precisión con elementos
desde Notas(1) hasta Notas(Fin)

ReDim Libros(1 To n, 1 To m) Array de dos dimensiones, tipo entero, con


elementos desde Libros(0,0) hasta Libros(n,m)

Si se define un array como dinámico, se puede redimensionar posteriormente en el programa


con la sentencia ReDim, perdiéndose en este caso los valores del array original.
Visual Basic emplea más tiempo en procesar arrays dinámicos que estáticos; sin embargo, los
arrays dinámicos permiten obtener un uso más eficiente de la memoria ya que el espacio ocu-
pado por el array sólo será asignado cuando se necesite.

Página 86
Informática

Operaciones con Matrices


Una vez que una matriz se declara con una sentencia Dim o Redim, el siguiente paso es cargar
los datos de la matriz con sentencias de asignación, con sentencias de ingreso por teclado o
con transferencias de datos desde una hoja de cálculo. Si no se ha inicializado previamente,
las matrices comienzan con valores iniciales iguales a cero. Se aconseja siempre inicializar las
matrices, aunque sea a valores iniciales iguales a cero. La fila inicial de una matriz es la fila 0,
pero esta fila no siempre se utiliza, muchos programas hacen uso de la fila 1 en adelante. Lo
mismo sucede con las columnas. La primera columna de toda matriz declarada con Dim es la
columna 0, pero muchos programas comienzan a utilizar de la columna 1 en adelante. En la
siguiente figura se esquematiza el almacenamiento de una matriz x( ) en la memoria.

x( )
0 0 0 0
x(0,0) x(0,1) x(0,2) x(0,3)
0 0 0 0
x(1,0) x(1,1) x(1,2) x(1,3)
0 0 0 0
x(2,0) x(2,1) x(2,2) x(2,3)

Ejemplo 9.1

Cargar una matriz Area( ) de 5 filas y 4 columnas con los siguientes datos:

Area( )
1 1 2 2
1 1 2 2
1 1 2 2
1 1 2 2
1 1 2 2

Solución 1
Inicio
Sub Ejemplo_9_1 ( )
Area(1,1) = 1
Dim Area(5,4) As Single
Area(1,2) = 1

Area(1,1) = 1
Area(1,3) = 2
Area(1,2) = 1
Area(1,3) = 2 Area(1,4) = 2
Area(1,4) = 2
...
Area(4,4) = 2 Area(4,4) = 2
End Sub
Fin

Este método es sumamente ineficiente, teniendo en cuenta que se ingresan los elementos con
20 procesos de asignación. Si la matriz fuera de 10 x 10, se necesitarían 100 gráficos de pro-
ceso para ingresar todos los elementos de la matriz.

Página 87
Informática

Solución 2 Inicio

Sub Ejemplo_9_2 ( )
i = 1,5
Dim Area(5,4) As Single
Area(i,1) = 1
For i = 1 To 5
Area(i,1) = 1 Area(i,2) = 1

Area(i,2) = 1 Area(i,3) = 2
Area(i,3) = 2
Area(i,4) = 2
Area(i,4) = 2
Next i
i
End Sub
Fin

Solución 3 Inicio

Sub Ejemplo_9_3 ( ) i = 1,5

Dim Area(5,4) As Single


j = 1,4

For i = 1 To 5
For j = 1 To 4 Area(i,j)

Area(i,j) = InputBox (“Ingrese un valor”)


Next j j
Next i
i
End Sub
Fin

Ejemplo 9.2

Se desea cargar el valor 50 a cada elemento de una matriz A( ) con 10 filas y 20 columnas.
Inicio
Sub Ejemplo_9_2 ( )
i = 1,10
Dim A(10,20) As Single

For i = 1 To 10 j = 1,20

For j = 1 To 20
A(i,j) = 50 A(i,j) = 50

Next j
Next i j

End Sub
i

Fin

Página 88
Informática

Ejercicio 9.1:
Hacer el diagrama de flujo y la codificación de un programa que permita introducir por te-
clado los elementos de una matriz A( ) de n filas y m columnas.

Sub Ejercicio_9_1 ( )
Inicio
Dim A( ) As Single
Dim n As Integer, m as Integer n,m

n = InputBox(“Ingrese el número de filas”)


i=1,n
m = InputBox(“Ingrese el número de columnas”)

ReDim A(n,m) As Single j=1,m

For j = 1 To n
A( i , j )
For i = 1 To m
A(i,j) = InputBox(“Ingrese el valor del elemento”) j
Next i
i
Next j
End Sub Fin

Hacemos un ejemplo con la siguiente matriz:


A( )
12 35 24
33 18 50

Prueba de escritorio:
n m i j A( ) Cálculos auxiliares .
2 3
1 1 A(1,1) = 12
2 A(1,2) = 35
3 A(1,3) = 24
4
2 1 A(2,1) = 33
2 A(2,2) = 18
3 A(2,3) = 50
4
3

Página 89
Informática

Ejercicio 9.2:
Hacer el diagrama de flujo y la codificación de un programa que permita cargar los elementos
de una matriz A( ) de n filas y m columnas leyéndolos de una planilla de cálculo.
Inicio
Sub Ejercicio_9_2 ( )

Dim A( ) As Single n,m

Dim n As Integer, m as Integer


n = InputBox(“Ingrese el número de filas”) i=1,n

m = InputBox(“Ingrese el número de columnas”)


j=1,m
ReDim A(n,m) As Single
For j = 1 To n
A( i , j )
For i = 1 To m
A(i,j) = Worksheets(“Datos”).Cells(i,j).Value
j
Next i
Next j i

End Sub Fin

Suponiendo tener una planilla de cálculo cargada con los siguientes datos:

A B C D E F
1 1 3 2 4
2 7 2 8 1
3 3 5 6 2
4

Prueba de escritorio:
n m i j A( ) Cálculos auxiliares .
3 4
1 1 A(1,1) = 1
2 A(1,2) = 3
3 A(1,3) = 2
4 A(1,4) = 4
5
2 1 A(2,1) = 7
2 A(2,2) = 2
3 A(2,3) = 8
4 A(2,4) = 1
5
3 1 A(3,1) = 3
2 A(3,2) = 5
3 A(3,3) = 6
4 A(3,4) = 2
5
4

Página 90
Informática

Manipulación de datos en una matriz


Una vez introducidos los datos en una matriz de dos dimensiones, el siguiente paso es ver
cómo utilizar dichos datos. El uso de las matrices de dos dimensiones requiere un especial
cuidado en la utilización de las filas y las columnas.

Ejercicio 9.3:
Hacer el diagrama de flujo y la codificación de un programa que permita sumar todos los
elementos de una matriz A( ) de 5 filas y 10 columnas.
Inicio
Sub Ejercicio_9_3 ( )
Suma = 0
Dim A(5,10) As Single
i = 1,5
Dim Suma as Single
Dim i as Integer, j as Integer
j = 1,10

Suma = 0
A(i,j)

For i = 1 to 5 j
For j = 1 to 10
i
A(i,j) = Worksheets(“Hoja1”).Cells(i,j).Value
i = 1,5
Next j
Next i j = 1,10

For i = 1 to 5 Suma = Suma + A(i,j)

For j = 1 to 10 j

Suma = Suma + A(i,j) i


Next j
Suma
Next i

Fin
MsgBox( “La suma de los elementos de la matriz es ” + Str$(Suma) )

End Sub

La planilla de cálculo Excel trae varias hojas de cálculo, cada una con su nombre, por ejemplo
“Hoja1”, “Hoja2”, “Hoja3”. Estos nombres también se pueden cambiar, como por ejemplo
“Datos”, “Resultados”, etc.
Con el agregado de Worksheets(“Nombre de la Hoja”) antes de la instrucción Range o Cells
puedo especificar la hoja de cálculo de la cual quiero leer los datos, entre las distintas hojas de
cálculo de la planilla Excel activa.

Página 91
Informática

Ejercicio 9.4:
Hacer el diagrama de flujo y la codificación de un programa que permita cargar los elementos
de una matriz A( ) de n filas y m columnas de manera que cada elemento almacene el valor
resultante de sumar su fila y su columna. Imprimir la matriz resultante.

Aij = i + j
A12 = 1 + 2 = 3 Inicio
A13 = 1 + 3 = 4
A22 = 2 + 2 = 4 n,m

Sub Ejercicio_9_4 ( )
i=1,n
Dim A( ) As Single
Dim n as Integer, m as Integer
j=1,m
Dim i as Integer, j as Integer
n = InputBox(“Ingrese el número de filas”)
A(i,j) = i + j
m = InputBox(“Ingrese el número de columnas”)
ReDim A(n,m) as Single j

For i = 1 to n
i
For j = 1 to m
A(i,j) = i + j
i=1,n
Next j
Next i
j=1,m
For i = 1 to n
For j = 1 to m
A(i,j)
MsgBox( A(i,j) )
Next j
Next i j

End Sub
i

Fin

Página 92
Informática

Prueba de escritorio:
n m i j A( ) Cálculos auxiliares .
2 3
1 1 A(1,1) = 2 A(1,1) = i + j = 1 + 1
2 A(1,2) = 3 A(1,2) = i + j = 1 + 2
3 A(1,3) = 4 A(1,3) = i + j = 1 + 3
4
2 1 A(2,1) = 3 A(2,1) = i + j = 2 + 1
2 A(2,2) = 4 A(2,2) = i + j = 2 + 2
3 A(2,3) = 5 A(2,3) = i + j = 2 + 3
4
3
1 1 En esta etapa de la prueba de escritorio
2 se produce la impresión de los elementos
3 de la matriz, con la variación de las
4 variables i y j, pero la matriz A( ) no se
2 1 modifica, sólo se imprime, por lo tanto
2 no aparece en este sector de la prueba
3 de escritorio.
4
3

Salida por pantalla


2
3
4
3
4
5

En la prueba de escritorio se pueden apreciar los valores que van tomando las variables i y j,
en un primer momento, para permitir el almacenamiento de los elementos de A( ), pero luego
también vuelven a tomar valores a medida que se va imprimiendo la matriz A( ). En esta etapa
no se modifican los valores de la matriz A( ), entonces no aparecen en la prueba de escritorio,
pero si lo hacen las variables i y j.

Página 93
Informática

Ejercicio 9.5:
Hacer el diagrama de flujo y la codificación de un programa que permita cargar los elementos
de una matriz D( ) de n filas y m columnas y calcule la suma de los elementos de cada co-
lumna almacenándolos en un vector C( ). Imprimir el vector C( ) resultante.

Ejemplo:
D( )
1 3 2 4
7 2 8 1
3 5 6 2

C( ) Inicio

11 10 16 7
n,m

Sub Ejercicio_9_5 ( ) i=1,n

Dim D( ) As Single, C( ) As Single


Dim n as Integer, m as Integer j=1,m

Dim i as Integer, j as Integer


D( i , j )
n = InputBox(“Ingrese el número de filas”)
m = InputBox(“Ingrese el número de columnas”)
j
ReDim D(n,m) as Single
ReDim C(m) as Single i

For i = 1 to n
j=1,m
For j = 1 to m
D(i,j) = InputBox(“Ingrese el elemento D( )”) i=1,n
Next j
Next i C(j) = C(j) + D(i,j)

For j = 1 to m
i
For i = 1 to n
C(j) = C(j) + D(i,j) j
Next i
Next j j=1,m

For j = 1 to m
MsgBox( “C(” + Str$(j) + “) =” + Str$(C(j)) ) C(j)

Next j
End Sub j

Fin

Página 94
Informática

Prueba de escritorio:
n m i j D( ) C( ) Cálculos auxiliares .
3 4
1 1 D(1,1) = 1
2 D(1,2) = 3
3 D(1,3) = 2
4 D(1,4) = 4
5
2 1 D(2,1) = 7
2 D(2,2) = 2
3 D(2,3) = 8
4 D(2,4) = 1
5
3 1 D(3,1) = 3
2 D(3,2) = 5
3 D(3,3) = 6
4 D(3,4) = 2
5
4
1 1 C(1) = 1 C(1) = C(1) + D(1,1) = 0 + 1
2 C(1) = 8 C(1) = C(1) + D(2,1) = 1 + 7
3 C(1) = 11 C(1) = C(1) + D(3,1) = 8 + 3
4
1 2 C(2) = 3 C(2) = C(2) + D(1,2) = 0 + 3
2 C(2) = 5 C(2) = C(2) + D(2,2) = 3 + 2
3 C(2) = 10 C(2) = C(2) + D(3,2) = 5 + 5
4
1 3 C(3) = 2 C(3) = C(3) + D(1,3) = 0 + 2
2 C(3) = 10 C(3) = C(3) + D(2,3) = 2 + 8
3 C(3) = 16 C(3) = C(3) + D(3,3) = 10 + 6
4
1 4 C(4) = 4 C(4) = C(4) + D(1,4) = 0 + 4
2 C(4) = 5 C(4) = C(4) + D(2,4) = 4 + 1
3 C(4) = 7 C(4) = C(4) + D(3,4) = 5 + 2
4
5
1
2
3
4
5

Salida por pantalla


C(1) = 11
C(2) = 10
C(3) = 16
C(4) = 7

Página 95
Informática

Ejercicio 9.6:
Hacer el diagrama de flujo y la codificación de un programa que permita cargar los elementos
de una matriz B( ) de n filas y m columnas y calcule el promedio de todos los valores almace-
nados en la matriz.

Ejemplo:
B( )
1 2 2 6
7 4 8 1
3 5 7 2
Inicio
AC PR
48 4
n,m

Sub Ejercicio_9_6 ( ) i=1,n

Dim B( ) As Single
j=1,m
Dim n As Integer, m As Integer
Dim i As Integer, j As Integer
B( i , j )
Dim AC As Single, PR As Single
n = InputBox(“Ingrese el número de filas”) j
m = InputBox(“Ingrese el número de columnas”)
i
ReDim B(n,m) as Single
For i = 1 to n AC = 0
For j = 1 to m
B(i,j) = Sheets(“Datos”).Cells(i,j).Value i=1,n

Next j
Next i j=1,m

AC = 0
AC = AC + B(i,j)
For i = 1 to n
For j = 1 to m j
AC = AC + B(i,j)
Next j i

Next i
PR = AC / (n*m)
PR = AC / (n*m)
MsgBox (“El promedio es ” + Str$(PR))
PR
End Sub

Fin

Página 96
Informática

Prueba de escritorio:
n m i j B( ) AC PR Cálculos auxiliares .
3 4
1 1 B(1,1) = 1
2 B(1,2) = 2
3 B(1,3) = 2
4 B(1,4) = 6
5
2 1 B(2,1) = 7
2 B(2,2) = 4
3 B(2,3) = 8
4 B(2,4) = 1
5
3 1 B(3,1) = 3
2 B(3,2) = 5
3 B(3,3) = 7
4 B(3,4) = 2
5
4
0 AC = 0
1 1 1 AC = AC + B(1,1) = 0 + 1
2 3 AC = AC + B(1,2) = 1 + 2
3 5 AC = AC + B(1,3) = 3 + 2
4 11 AC = AC + B(1,4) = 5 + 6
5
2 1 18 AC = AC + B(2,1) = 11 + 7
2 22 AC = AC + B(2,2) = 18 + 4
3 30 AC = AC + B(2,3) = 22 + 8
4 31 AC = AC + B(2,4) = 30 + 1
5
3 1 34 AC = AC + B(3,1) = 31 + 3
2 39 AC = AC + B(3,2) = 34 + 5
3 46 AC = AC + B(3,3) = 39 + 7
4 48 AC = AC + B(3,4) = 46 + 2
5
4

4 PR = AC / (n*m) = 48 / (3*4)

Salida por pantalla

El promedio es 4

Página 97
Informática

Ejercicio 9.7:
Hacer el diagrama de flujo y la codificación de un programa que permita cargar los elementos
de una matriz A( ) de n filas y m columnas, y determine el mayor valor almacenado en dicha
matriz, y obtenga también la fila y la columna donde se halla este valor máximo. Imprimir los
resultados Inicio

Ejemplo:
n,m
A( )
12.30 21.45 0.78
i=1,n
7.63 4.67 45.32
3.66 15.72 8.66
j=1,m

Mayor Fila Columna


45.32 2 3 A( i , j )

Sub Ejercicio_9_7( ) j

Dim A( ) As Single
i
Dim n As Integer, m As Integer
Dim i As Integer, j As Integer Mayor = A(1,1)
Dim Mayor As Single
Dim Fila As Integer, Columna As Integer Fila = 1

n = InputBox(“Ingrese el número de filas”)


Columna = 1
m = InputBox(“Ingrese el número de columnas”)
ReDim A(n,m) as Single i=1,n
For i = 1 to n
For j = 1 to m j=1,m
A(i,j) = Cells(i,j).Value
Next j
Next i Mayor < A(i,j) Si

Mayor = A(1,1) Mayor = A(i,j)

Fila = 1
Fila = i
Columna = 1 No
For i = 1 to n Columna = j

For j = 1 to m
If Mayor < A(i,j) Then j
Mayor = A(i,j)
Fila = i i

Columna = j
Mayor
End If Fila , Columna
Next j
Next i
Fin
MsgBox (“El mayor elemento es ” + Str$(Mayor))
MsgBox (“Se encuentra en la fila ” + Str$(Fila) + “y en la columna ” + Str$(Columna))
End Sub

Página 98
Informática

Prueba de escritorio:
n m i j A( ) Mayor Fila Columna Cálculos auxiliares .
3 3
1 1 A(1,1) = 12.30
2 A(1,2) = 21.45
3 A(1,3) = 0.78
4
2 1 A(2,1) = 7.63
2 A(2,2) = 4.67
3 A(2,3) = 45.32
4
3 1 A(3,1) = 3.66
2 A(3,2) = 15.72
3 A(3,3) = 8.66
4
4
12.30 1 1
1 1
2 21.45 1 2
3
4
2 1
2
3 45.32 2 3
4
3 1
2
3
4
4

Salida por pantalla

El mayor elemento es 45.32


Se encuentra en la fila 2 y en la columna 3

Página 99
Informática

Ejercicio 9.8:
Hacer el diagrama de flujo y la codificación de un programa que permita cargar un vector V( )
de n elementos y que calcule los cosenos directores de dicho vector. Imprimir los resultados.
Considerando como ejemplo un espacio de 2 dimensiones, el vector tendrá dos componentes
x1 y x2, su módulo será igual a:
2 2
M = x1 + x 2
y sus cosenos directores serán: Inicio
x
cos α 1 = 1
M
n
x
cos α 2 = 2
M
i=1,n
Sub Ejercicio_9_8 ( )
Dim V( ) As Single, C( ) As Single V( i )
Dim n As Integer, i As Integer
Dim MV As Single i

n = InputBox(“Ingrese el número de elementos”)


MV = 0
ReDim V(n) as Single, C(n) as Single
For i = 1 to n i=1,n

V(i) = InputBox(“Ingrese el elemento del vector”)


Next i MV = MV + V(i) ^ 2

MV = 0
i
For i = 1 to n
MV = MV + V(i) ^ 2 MV = MV ^ 0.5

Next i
i=1,n
MV = MV ^ 0.5
For i = 1 to n
C(i) = V(i) / MV
C(i) = V(i) / MV
Next i i

For i = 1 to n
i=1,n
Sheets(“Cosenos”).Cells(i,1).Value = C(i)
Next i
C(i)
End Sub

Fin

Página 100
Informática

Ejercicio 9.9:
Hacer el diagrama de flujo y la codificación de un programa que calcule el producto entre dos
polinomios P(x) de grado n y Q(x) de grado m. El polinomio resultante de grado k debe ser
almacenado en R(x). Imprimir los resultados.
Inicio
Ejemplo:
P( x) = 4 ⋅ x 3 + 2 ⋅ x + 1
n,m
Q ( x) = 3 ⋅ x 2 + 2 ⋅ x

i = n , 0 , -1
R ( x ) = 12 ⋅ x 5 + 8 ⋅ x 4 + 6 ⋅ x 3 + 7 ⋅ x 2 + 2 ⋅ x

Sub Ejercicio_9_9( ) P( i )

Dim P( ) As Single, Q( ) As Single, R( ) As Single


i
Dim n As Integer, m As Integer
Dim i As Integer, j As Integer, k As Integer j = m , 0 , -1
n = InputBox(“Ingrese el grado de P(x)”)
m = InputBox(“Ingrese el grado de Q(x)”) Q( j )

ReDim P(n) As Single, Q(m) As Single, R(n+m) As Single


For i = n to 0 Step -1 j

P(i) = InputBox(“Ingrese elemento de P(x)”)


i=0,n
Next i
For j = m to 0 Step -1 j=0,m

Q(j) = InputBox(“Ingrese elemento de Q(x)”)


k=i+j
Next j
For i = 1 to n R(k) = R(k) + P(i) * Q(j)

For j = 1 to m
j
k=i+j
R(k) = R(k) + P(i) * Q(j) i

Next j
k=n+m
Next i
k=n+m
i = k , 0 , -1
For i = k to 0 Step -1
MsgBox(“Coeficiente de R(x) = ”+Str$(R(i))) R( i )
Next i
End Sub i

Fin

Página 101
Informática

Ejercicio 9.10:
Hacer el diagrama de flujo y la codificación de un programa que permita extraer el mayor
valor de la columna 3 de una matriz A( ) de n filas y m columnas. Imprimir el mayor valor, la
fila en la que se encuentra, y toda la fila de la matriz A( ) en donde se encuentra el mayor
valor obtenido.
Inicio

Sub Ejercicio_9_10( ) n,m

Dim A( ) As Single
Dim n As Integer, m As Integer i=1,n

Dim i As Integer, j As Integer


Dim Mayor As Single j=1,m

Dim Fila As Integer


A( i , j )
n = InputBox(“Ingrese el número de filas”)
m = InputBox(“Ingrese el número de columnas”)
j
ReDim A(n,m) as Single
For i = 1 to n i

For j = 1 to m
Mayor = A(1,3)
A(i,j) = InputBox(“Ingrese elemento de A( )”)
Next j Fila = 1
Next i
Mayor = A(1,3) i=1,n

Fila = 1
For i = 1 to n Mayor < A(i,3) Si
If Mayor < A(i,3) Then
Mayor = A(i,3)
Mayor = A(i,3)
Fila = i Fila = i
No
End If
Next i
MsgBox (“El mayor elemento es ” + Str$(Mayor)) i

MsgBox (“Se encuentra en la fila ” + Str$(Fila))


For j = 1 to m Mayor , Fila
MsgBox( A(Fila,j) )
Next j
j=1,m
End Sub

A(Fila,j)

Fin

Página 102
Informática

Ejercicio 9.11:
Hacer el diagrama de flujo y la codificación de un programa que permita intercambiar todos
los elementos de las filas 1 y 3 de una matriz A( ) de n filas y m columnas. Imprimir la matriz
A( ) resultante.

Inicio
Sub Ejercicio_9_11( )
Dim A( ) As Single n,m
Dim n As Integer, m As Integer
Dim i As Integer, j As Integer i=1,n

n = InputBox(“Ingrese el número de filas”)


m = InputBox(“Ingrese el número de columnas”) j=1,m

ReDim A(n,m) as Single


A( i , j )
For i = 1 to n
For j = 1 to m
j
A(i,j) = InputBox(“Ingrese elemento de A( )”)
Next j
i
Next i
For j = 1 to m j=1,m
aux = A(1,j)
A(1,j) = A(3,j) aux = A(1,j)
A(3,j) = aux
Next j A(1,j) = A(3,j)

For i = 1 to n
A(3,j) = aux
For j = 1 to m
Worksheets(“Matriz final”).Cells(i,j).Value = A(i,j)
j
Next j
Next i
i=1,n
End Sub
j=1,m

A( i , j )

Fin

Página 103
Informática

Ejercicio 9.12:
Hacer el diagrama de flujo y la codificación de un programa que permita controlar si en la
diagonal principal de una matriz cuadrada A( ) de n filas y n columnas, se encuentra un valor
menor a 10-3. Imprimir todos los valores encontrados que cumplan dicha condición.

Observar en este diagrama de flujo como se puede recorrer la diagonal principal de la matriz
con un solo subíndice, ya que sabemos que i = j.

Inicio

Sub Ejercicio_9_12( )
n
Dim A( ) As Single
Dim n As Integer i=1,n
Dim i As Integer
n = InputBox(“Ingrese el número de filas”) j=1,n
ReDim A(n,n) as Single
For i = 1 to n A( i , j )
For j = 1 to n
A(i,j) = InputBox(“Ingrese elemento de A( )”) j
Next j
Next i i
For i = 1 to m
If A(i,i) < 0.001 Then i=1,n
MsgBox( A(i,i) )
MsgBox(“Fila ” + Str$(i))
MsgBox(“Columna ” + Str$(i)) A(i,i) < 0.001 Si

End If
A(i,i)
Next i "Fila ", i
"Columna ", i
End Sub No

Fin

Página 104
Informática

Ejercicio 9.13:
Hacer el diagrama de flujo y la codificación de un programa que permita introducir una matriz
A( ) de n filas y m columnas, y luego intercambie las filas p y k elegidas por el usuario. Im-
primir la matriz A( ) resultante.

Sub Ejercicio_9_13( )
Inicio
Dim A( ) As Single
Dim n As Integer, m As Integer
n,m
Dim i As Integer, j As Integer
Dim p As Integer, k As Integer
i=1,n
n = InputBox(“Ingrese el número de filas”)
m = InputBox(“Ingrese el número de columnas”)
j=1,m
ReDim A(n,m) as Single
For i = 1 to n A( i , j )

For j = 1 to m
A(i,j) = InputBox(“Ingrese elemento de A( )”) j

Next j
i
Next i
p = InputBox(“Ingrese la fila a intercambiar”) p,k
k = InputBox(“Ingrese la otra fila a intercambiar”)
For j = 1 to m j=1,m
aux = A(p,j)
A(p,j) = A(k,j) aux = A(p,j)
A(k,j) = aux
Next j A(p,j) = A(k,j)

For i = 1 to n A(k,j) = aux


For j = 1 to m
Worksheets(“Matriz final”).Cells(i,j).Value = A(i,j) j
Next j
Next i i=1,n

End Sub
j=1,m

A( i , j )

Fin

Página 105
Informática

Ejercicio 9.14:
Escribir un programa que lea el nombre de un cliente y el total de sus pedidos semanales de
materiales. El total de clientes es de 100 y se debe contemplar que hace un pedido de mate-
riales por cada día de la semana, de lunes a viernes.

Lunes Martes Miércoles Jueves Viernes


Luis García 425 300 125 650 450
José Rodríguez 160 360 145 750 850
Juan Pérez 130 500 175 600 320
... ... ... ... ... ...

Los nombres se almacenan en un vector Nombre$( ) de 100 elementos y los valores de los
pedidos diarios en una matriz Pedido( ) de 100 x 5 elementos. La lectura se efectúa tomando
los datos de una hoja de Excel que tiene el nombre de “Clientes” y su columna A está cargada
con los nombres de 100 clientes. Los pedidos se leen desde una hoja de Excel con nombre
“Compras” y cuyas columnas A, B, C, D y E contienen las compras diarias.

Sub Ejemplo_9_14 ( ) Inicio

Dim Nombre$(100) i = 1,100

Dim Pedido(100,5) As Single


Dim Suma(100) As Single Nombre$(i)

Dim i as Integer, j as Integer


j = 1,5
For i = 1 to 100
Nombre$(i) = Sheets(“Clientes”).Cells(i,1).Value Pedido(i,j)
For j = 1 to 5
Pedido(i,j) = Sheets(“Compras”).Cells(i,j).Value j

Next j i

Next i
i = 1,100
For i = 1 to 100
For j = 1 to 5 j = 1,5
Suma(i) = Suma(i) + Pedido(i,j)
Next j Suma(i) = Suma(i) + Pedido(i,j)

Sheets(“Totales”).Cells(i,1).Value = Suma(i) j
Next i
Suma(i)
End Sub

Fin

Página 106
Informática

Ejercicios Capítulo 9
1. Realizar el diagrama de flujo y la codificación de un programa que defina una matriz A( )
de n filas y m columnas, ingrese los datos por teclado y por último imprima todos los ele-
mentos de la matriz A( ).

2. Realizar el diagrama de flujo y la codificación de un programa que permita almacenar en


cada elemento de la matriz P( ) de n filas y m columnas, la suma del valor de su fila y su co-
lumna. Imprimir los elementos de la matriz resultante.

Ejemplo: El elemento P(1,1) debe ser = 1 + 1 = 2


................
P(3,4) debe ser = 3 + 4 = 7
................
P(n,m) debe ser = n + m

3. Realizar el diagrama de flujo y la codificación de un programa que permita calcular el pro-


ducto de los elementos de dos matrices A( ) y B( ) de n filas y m columnas, almacenando los
resultados en una matriz C( ) de las mismas dimensiones. Imprimir la matriz C( )

Ejemplo: El elemento C(1,1) = A(1,1) * B(1,1)


................
C(3,4) = A(3,4) * B(3,4)
................
C(n,m) = A(n,m) * B(n,m)

4. Realizar el diagrama de flujo y la codificación de un programa que permita transformar los


datos de una matriz Datos( ) de n filas y m columnas, elevando cada elemento a la tercera po-
tencia y almacenando los resultados en otra matriz Res( ) de las mismas dimensiones. Impri-
mir la matriz Res( ) resultante.

5. Realizar el diagrama de flujo y la codificación de un programa que permita introducir los


datos de una matriz A( ) de n filas y m columnas, analizar y almacenar el mayor valor ingre-
sado, colocándolo en una variable Max. Imprimir finalmente el valor de Max.

6. Realizar el diagrama de flujo y la codificación de un programa que permita introducir los


datos de una matriz A( ) de n filas y m columnas, analizar y almacenar el menor valor ingre-
sado, colocándolo en una variable Min, además de su posición dentro de la matriz. Imprimir
finalmente el valor de la variable Min y la fila y la columna a la cual pertenece.

7. Realizar el diagrama de flujo y la codificación de un programa que permita introducir los


datos de una matriz B( ) de n filas y m columnas, y almacenar la suma de todos sus elementos
en una variable Sum. Imprimir el valor de dicha variable.

8. Realizar el diagrama de flujo y la codificación de un programa que permita buscar un valor


k ingresado por teclado, dentro de una matriz Mat( ) de n filas y m columnas. Una vez encon-
trado almacenar e imprimir su ubicación.

Página 107
Informática

9. Realizar el diagrama de flujo y la codificación de un programa que permita introducir los


datos en una matriz C( ) de n filas y m columnas, y luego compararlos con un valor x ingre-
sado por teclado. Si el valor del elemento de la matriz es mayor al valor de x, imprimir dicho
valor y su ubicación dentro de la matriz.

10. Realizar el diagrama de flujo y la codificación de un programa que permita introducir los
datos de una matriz A( ) de n filas y m columnas, luego intercambiar los valores almacenados
en la primera y la segunda columna, e imprimir la matriz A( ) transformada.

Ejemplo: Intercambiar el elemento A(1,1) con el A(1,2)


A(2,1) con el A(2,2)
Etc.

11. Realizar el diagrama de flujo y la codificación de un programa que permita introducir por
teclado los elementos de una matriz Temp( ) de n filas y m columnas, y adicionar un valor
constante k sólo a los elementos de la diagonal principal, recordando que en dichos elementos
el número de fila es igual al número de columna, es decir, i=j. Imprimir la matriz Temp( )
resultante.

12. Hacer el diagrama de flujo correspondiente y determinar qué salida por pantalla produce
el siguiente programa en Visual Basic.

Dim A(3,3) as Single


Dim i as Integer, j as Integer

For i = 1 To 3
For j = 1 To 3
A(i,j) = InputBox (“Introduzca un número”)
Next j
Next i

For i = 1 To 3
For j = 1 To 3
MsgBox (A(i,j))
Next j
Next i

si se ingresan los siguientes valores por teclado: 568, 123, 1, 3, 0.12, 24, 930, 7, -750

Página 108
Informática

13. Hacer el diagrama de flujo correspondiente y determinar qué salida por pantalla produce
el siguiente programa en Visual Basic.

Dim C(4,4) as Single


Dim i as Integer, j as Integer

For i = 1 To 4
For j = 1 To 4
C(i,j) = i + j
Next j
Next i

For i = 1 To 4
For j = 1 To 4
MsgBox (C(i,j))
Next j
Next i

14. Realizar el diagrama de flujo y la codificación de un programa que permita calcular la


suma de los valores de la columna 2 de una matriz Mat( ) de n filas y m columnas, la alma-
cene en una variable S e imprima su valor.

15. Realizar el diagrama de flujo y la codificación de un programa que permita calcular la


suma de los valores de la fila f de una matriz A( ) de n filas y m columnas, la almacene en
una variable S e imprima su valor.

16. Realizar el diagrama de flujo y la codificación de un programa que permita calcular la


suma de todas las columnas de una variable Mat( ) de n filas y m columnas, y las almacene en
un vector S( ) de m elementos. Imprimir los elementos del vector S( ).

17. Realizar el diagrama de flujo y la codificación de un programa que resuelva el siguiente


problema: Se dispone de una matriz T( ) de n filas y m columnas cargada con valores positi-
vos y negativos, y se desea calcular la cantidad de valores positivos y la cantidad de valores
negativos. Se supone que ningún elemento de la matriz T( ) es igual a cero.

18. Realizar el diagrama de flujo y la codificación de un programa que resuelva el siguiente


problema: Cada alumno de la carrera de Ingeniería tiene notas correspondientes a ocho mate-
rias diferentes, las cuales varían entre cero y diez. Se necesita:

a) Calcular el promedio de cada alumno.


b) Calcular el promedio general de cada materia.
c) Calcular la cantidad de ceros en cada materia.

19. Realizar el diagrama de flujo y codificación del programa que permita calcular la suma, la
resta y el producto de las dos matrices A( ) y B( ) siguientes:

2 1 3 -3 3 1
A( ) 1 -1 2 B( ) 4 0 -3
-1 -4 5 6 -2 7

Página 109
Informática

20. Realizar el diagrama de flujo y la codificación de un programa que permita obtener el co-
sto total de un viaje entre distintas ciudades 1, 2, 3, etc, teniendo como datos que el costo por
kilómetro es de 10 $/km, el viaje está formado por un par de valores c1 y c2 ingresados por
teclado que corresponden a las ciudades de origen y destino, y las distancias entre estas ciu-
dades están almacenadas en una matriz D(n,n) superior, cuyos elementos determinan las dis-
tancias entre las ciudades de su fila y su columna.

Ejemplo: El elemento D(1,2) determina la distancia entre las ciudades 1 y 2


El elemento D(3,5) determina la distancia entre las ciudades 3 y 5
El elemento D(3,7) determina la distancia entre las ciudades 3 y 7

21. Realizar el diagrama de flujo y la codificación de un programa que permita obtener el co-
sto total de un viaje, como el problema anterior, considerando ahora que el viaje está almace-
nado en una matriz V( ), de n filas y 2 columnas, en la cual se encuentran las ciudades de ori-
gen en la columna 1 y las ciudades de destino en la columna 2. Los otros datos son iguales al
problema anterior.

Ejemplo: La matriz V( ) de viaje puede estar constituida por

2 7
V( ) 7 6
6 1

Es decir que el viaje se inicia en la ciudad 2 y se dirige a la ciudad 7, posteriormente se sale


de la ciudad 7 y se llega a la ciudad 6 y por último se recorre desde la ciudad 6 hasta la 1.

22. Realizar el diagrama de flujo y la codificación de un programa que obtenga el costo men-
sual de telefonía celular mediante el cálculo del costo de cada llamado efectuado durante el
último mes, cuyos datos se encuentran en una matriz L(n,2) en la cual la primera columna
corresponde a la localidad a la que se ha llamado y la segunda columna a la cantidad de se-
gundos de duración de la comunicación. Para calcular el costo unitario de cada llamado se
tiene como dato además un vector C(n) en el que el elemento i es el costo en $/min pertene-
ciente a la ciudad i.

Ejemplo:

1 2 0.32
L( ) 1 5 C( ) 0.62
4 3 0.78
3 8 0.95
3 2 1.02
1 11

Página 110
Informática

Capítulo 10
Series
Ejercicio 10.1:
Hacer un diagrama de flujo que permita calcular e imprimir los primeros 20 términos de la serie
de Fibonacci. Esta serie tiene los términos cuyo valor es la suma de los valores de los dos
términos anteriores, excepto los dos primeros.
Serie de Fibonacci: 1, 1, 2, 3, 5, 8, 12, ….

Prueba de escritorio:
Inicio c a s f .
1 1
c=1 2 0 1 1
3 1 1 2
f=1 4 1 2 3
5 2 3 5
...
f
Salida por pantalla
1
c=c+1 1
2
a=0 3
5
s=1 ...

f=a+s
Sub Ejemplo_10_1 ( )
Dim c As Integer, f As Integer
f
Dim a As Integer, s As Integer
c=1
f =1
c=c+1
MsgBox ( f )
c=c+1
a=s
a=0
s=1
s=f
Do
f=a+s
c > 20 Si MsgBox ( f )
c=c+1
No Fin a=s
s=f
Loop Until c > 20
End Sub

Página 111
Informática

Ejercicio 10.2:
N
2
Calcular la serie s = ∑1 k para una cantidad n de términos.
k =1

Inicio Prueba de escritorio


k s n .
s=0 0 0 4
1 1
k=0 2 1.25
3 1.3611
4 1.6936
n

Salida por pantalla


k=k+1
La serie es igual a 1.6936
s=s+(1/k^2)

k=n Si

No s

Sub Ejemplo_10_1 ( )
Dim s As Single
Fin
Dim k As Integer, n As Integer
s=0
k=0
n = InputBox( “Ingrese la cantidad de términos”)
Do
k=k+1
s=s+(1/k^2)
Loop Until k = n
MsgBox (“La serie es igual a ” + Str$(s) )
End Sub

Página 112
Informática

Ejercicio 10.3:
1 1 1 1
Calcular la serie S ( x ) = 1 + + 2 + 3 + ... + n para una cantidad n de términos.
x x x x
Inicio

n
Prueba de escritorio
k S n x .
4 2
x 0
0 1
S=0 1 1.5
2 1.75
k=0 3 1.875
4 1.9375
S = S + 1 / x^k

Salida por pantalla


k=n Si
1.9375
No S

k=k+1
Fin

Ejercicio 10.4:
1 1 1 1
Calcular la serie S ( x ) = 1 + + 2 + 3 + ... + n hasta que el último término calculado sea
menor que e = 0.001. x x x x

Inicio
Prueba de escritorio
x
k S x e .
5 0.001
0
e 0 1
1 1.2
S=0 2 1.24
3 1.248
k=0 4 1.2496
5 1.24992
S = S + 1 / x^k

Salida por pantalla


1 / x^k < e Si
1.24992
No S

k=k+1
Fin

Página 113
Informática

Ejercicios Capítulo 10
1. Realizar el diagrama de flujo que imprima y sume la serie de números 3, 6, 9, 12, ..., 99, hasta
un valor n ingresado. Imprimir además la suma obtenida.

2. Realizar el diagrama de flujo que calcule e imprima la serie de Fibonacci, donde cada término
es la suma de los dos anteriores, con excepción de los dos primeros. Serie de Fibonacci: 1, 1, 2,
3, 5, 8, ...

3. Realizar el diagrama de flujo que calcule e imprima una serie de números donde cada número
sea igual al doble del número anterior.

4. Calcular la fórmula:

x2 x3 xn
e( x ) = 1 + x + + + ... +
2! 3! n!

a) para un valor de x y de n leídos desde el teclado.

b) para un valor de x leído desde el teclado y hasta que n sea tal que xn
≤ 0.0001
n!

Página 114
Informática

Capítulo Visual Basic


Instrucciones del lenguaje Visual Basic
Introducción
El lenguaje que se utiliza en la cátedra es el Visual Basic para Aplicaciones, basado en las
versiones anteriores de Microsoft Basic y Qbasic. Este lenguaje tiene un conjunto de palabras
reservadas, que son los nombres de las instrucciones, las funciones, los nombres de eventos, etc.,
los cuales se deben usar de acuerdo a la sintaxis prescripta por el lenguaje.
Los gráficos de los diagramas de flujo explicados anteriormente tienen equivalencias directas
con algunas de estas instrucciones del Visual Basic. En este capítulo se presenta la sintaxis de las
instrucciones gradualmente y con ejemplos, de manera de poder luego codificar los diagramas de
flujo de los capítulos anteriores.
El proceso de escribir el programa desarrollado en un diagrama de flujo a un lenguaje como el
Visual Basic se conoce como codificación, y el resultado, es decir el programa escrito, toma el
nombre de código.

Variables
Una variable es una zona o posición de memoria donde se almacena información (datos). Las
variables se identifican con un nombre, que debe cumplir ciertos requisitos del lenguaje.
Entre sus características se encuentra la estructura interna de la variable, que determina si una
variable es escalar o matricial, y el tipo de datos que puede almacenar, lo cual define el tipo de
variable. Las variables pueden ser numéricas o alfanuméricas. Los tipos de variables se analizan
con mayor detalle a continuación:

Variables Alfanuméricas o Variables de cadena: String

Hay dos clases de variables de cadenas: cadenas de longitud variable y cadenas de longitud fija.
Las cadenas de longitud variable pueden contener hasta 2 millones de caracteres. Las cadenas de
longitud fija pueden contener de 1 a 64 KB de caracteres.
Los caracteres que almacenan pueden ser letras, números, y otros símbolos como π, φ, £, µ, α, β,
γ, ε, incluidos en los juegos de caracteres ASCII. Dichos caracteres son identificados por las
computadoras mediante códigos.
Los códigos para caracteres de tipo String varían desde 0 a 255. Los primeros 128 caracteres (0-
127) corresponden a las letras y los símbolos de un teclado estándar de Estados Unidos. Estos
primeros 128 caracteres son los mismos que los definidos por el juego de caracteres ASCII. Los
siguientes 128 caracteres (128–255) representan caracteres especiales, como letras de alfabetos
internacionales, acentos, símbolos de moneda y fracciones.
El carácter de declaración de tipo String en el nombre de las variables es el signo de dólar ($).

Ejemplos:
A$ = “Hoy”
B$ = “Día Jueves”
Mensaje$ = “Ingresar el ángulo β:”
Direccion$ = “Av. Las Heras n°727”
Sexo$ = “Hombre”
Opcion$ = “Si”
DNI$ = “16.534.258”
LU$ = “4297”

Página 1
Informática

Variable Numérica Entera: Integer

Las variables numéricas enteras tipo Integer se almacenan en memoria como números de 16 bits
(2 bytes) con valores que van desde -32768 a 32767.
El carácter de declaración de tipo en el nombre de la variable, para el tipo Integer, es el signo de
porcentaje (%). Este signo es opcional siempre que se la haya dimensionado anteriormente como
Integer.

Ejemplos:
c = 42
n = 10
cont% = 32000
Fila = 1
Columna = 3
i% = 10
j% = i% + 1

Variable Numérica Entera Larga: Long

Las variables enteras largas almacenan números enteros entre -2147483648 y 2147483647.
Las variables Long se almacenan en la memoria como números con signo de 32 bits, ocupando 4
bytes.
El carácter de declaración de tipo en el nombre de la variable, para el tipo Long, es el signo &.

Ejemplos:
c = 4258687
n = 100000
cont = 320
fila& = 2
Cantidad = 427000
cd& = 175

Variable Decimal o de Punto Flotante - Simple Precisión: Single

Las variables de punto flotante de precisión simple tipo Single almacenan valores decimales, que
van desde –3.402823 x 1038 a –1.401298 x 10-45 para valores negativos y de 1.401298 x 10-45 a
3.402823 x 1038 para valores positivos.
Las variables Single o variables de punto flotante de precisión simple se almacenan en memoria
como números IEEE de coma flotante de 32 bits, ocupando 4 bytes.
El carácter de declaración de tipo en el nombre de la variable, para el tipo Single, es el signo de
exclamación (!).

Ejemplos:
Sup = 265.254236
base = 12.3685
altura = 32
Error = 0.0001
error! = 0.005
Det! = 136.432586
Area = base * altura

Página 2
Informática

Variable Decimal o de Punto Flotante - Doble Precisión: Double

Las variables dobles o variables de punto flotante de doble precisión, Double, almacenan valores
decimales comprendidos desde -1.79769313486231 x 10308 a –4.94065645841247 x 10-324 para
valores negativos y desde 4.94065645841247 x 10-324 a 1.79769313486232 x 10308 para valores
positivos.
Las variables Double se almacenan en memoria como números IEEE de coma flotante de 64 bits
ocupando 8 bytes.
El carácter de declaración de tipo en el nombre de variable, para Double, es el signo numeral (#).

Ejemplos:
Sup# = 265.25423125762836
base = 12.36851238465
altura = 14
Error# = 0.000000001
error = 0.000000005
Determinante# = 136.432582568753466

El lenguaje soporta otros tipos de variables que no se utilizarán en la cátedra. Para mayor
información se puede consultar la Ayuda del Visual Basic para Aplicaciones.

Declaración de Variables
En el código de un programa es recomendable efectuar al inicio la declaración de las variables
que se van a utilizar, asignándoles un nombre y un tipo, es decir, definiendo qué tipo de datos va
a almacenar cada una.

Instrucción Dim
La declaración de las variables se efectúa con la instrucción Dim. La instrucción Dim declara
variables y les asigna espacio de memoria para almacenamiento.
Esta instrucción no tiene un gráfico correlativo en el diagrama de flujo.

Sintaxis

Dim nombre_variable [As tipo]

donde:
nombre_variable: Argumento requerido. Es el nombre de la variable y sigue las reglas están-
dar de nombres de variables.
tipo: Argumento opcional. Es el tipo de variable, en relación al tipo de datos que puede alma-
cenar. Los tipos pueden ser Byte, Boolean, Integer, Long, Currency, Single, Double, Date,
String (para cadenas de longitud variable), String * longitud (para cadenas de longitud fija),
Object, Variant, un tipo definido por el usuario, o un tipo de objeto. Algunos de estos tipos ya
han sido descriptos anteriormente.

Página 3
Informática

Comentarios

Cuando se inicializan variables, una variable numérica se inicializa con 0 y una variable alfa-
numérica se inicializa con una cadena nula "". Las variables declaradas con Dim en el nivel de
módulo están disponibles para todos los procedimientos dentro de ese módulo. En el nivel de
procedimiento o programa, las variables sólo están disponibles dentro de ese procedimiento.
La declaración de varias variables en una sola instrucción Dim se realiza separando con comas
las variables y asignando a cada una un tipo de variable, con la palabra reservada As.
Cuando se utiliza la instrucción Dim en un procedimiento, se recomienda colocarla al principio
del mismo.

Ejemplos:

Declaración de variables numéricas enteras:


Dim Fila as Integer
Dim Columna as Integer
Dim i as Integer, j as Integer
Dim n as Integer
Dim n as Integer, m as Integer

Declaración de variables numéricas decimales de simple precisión:


Dim AC as Single
Dim x as Single
Dim x0 as Single, x1 as Single
Dim largo as Single
Dim base as Single, altura as Single

Declaración de variables numéricas decimales de doble precisión:


Dim Sum as Double
Dim Determinante as Double
Dim y as Double
Dim x as Double, y as Double
Dim AC as Double

Declaración de variables alfanuméricas:


Dim Nombre as String o Dim Nombre$
Dim Titulo as String o Dim Titulo$
Dim Mensaje as String o Dim Mensaje$
Dim Op as String o Dim Op$

Las declaraciones de variables alfanuméricas de los ejemplos anteriores son equivalentes. Así,
por ejemplo, Nombre y Nombre$ hacen referencia a la misma variable, y por lo tanto a la misma
posición de memoria, de tal manera que los datos que se almacenan en una de ellas desplazan a
los datos anteriormente almacenados.

Página 4
Informática

Equivalencia entre Instrucciones y Diagramas de Flujo

Inicio y Fin
Los gráficos de Inicio y Fin se corresponden con dos instrucciones de Visual Basic: Sub y End
Sub. Las instrucciones Sub y End Sub se utilizan de acuerdo al esquema que se presenta a con-
tinuación:

Inicio Sub nombre ( argumentos )


...
...
...
Fin End Sub

donde:
nombre: Es el nombre del procedimiento. El nombre de un procedimiento puede ser de hasta
255 caracteres y debe comenzar con una letra. Puede contener letras, números y guión bajo.
No puede contener espacios.
argumentos: Es opcional. Es una lista de variables que se pasan al procedimiento. Puede no
contener argumentos pero los paréntesis son obligatorios.

Proceso
El diagrama de proceso no necesita una instrucción del Visual Basic. En las primeras versiones
del Basic se utilizaba la palabra Let, pero actualmente es suficiente escribir como código la ope-
ración que se desea realizar, con la sintaxis correcta.

Let variable = operación

Ejemplos:

c=c+1 c=c+1

S=L*A S=L*A

N$ = "Día" N$ = “Día”

Página 5
Informática

PI = 3.1416 PI = 3.1416

Ingreso de Datos
Existen diferentes formas de ingresar datos al proceso que estamos desarrollando. Se presentan a
continuación algunas de ellas, que son las utilizadas en la materia.

Ingreso de datos por teclado

variable = InputBox ( mensaje )

donde:
variable: es la variable que almacenará el dato a ingresar por teclado. Los tipos de variables se
estudiaron al principio del capítulo. Para efectuar un primer control de los datos válidos que
se admiten en la variable se la debe declarar previamente con la instrucción Dim.
mensaje: es una cadena de texto o cadena alfanumérica que facilita la comprensión del cuadro
de diálogo, haciendo posible una descripción del dato esperado. Puede ser un mensaje escrito
directamente entre comillas o una variable alfanumérica que contenga el mensaje aclaratorio.

Mediante la instrucción InputBox se despliega un cuadro de texto con un sector que permite
escribir los datos utilizando el teclado. Una vez que se oprime Aceptar, la variable que se utilizó
en la instrucción InputBox recibe los datos escritos en el cuadro de texto.
El ingreso por defecto de una instrucción InputBox es una cadena de texto, por lo tanto es nece-
sario declarar las variables numéricas previamente, para que el dato introducido por teclado se
tome como valor numérico. La declaración de las variables se realiza con la instrucción Dim
como se explicó anteriormente.

Ejemplos:

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

Nombre$ Nombre$ = InputBox ( “Ingrese un nombre” )

x0 = InputBox ( “Ingrese el límite inferior x0:” )


x0 , x1 , h x1 = InputBox ( “Ingrese el límite superior x1:” )
h = InputBox ( “Ingrese el incremento h:” )

Página 6
Informática

Mensaje$ = “Ingrese un número menor a 10”


A A = InputBox ( Mensaje$ )

Ingreso de datos desde las celdas de Excel


Instrucción Range

variable = Range ( rango ) .Value

donde:
variable: es la variable que almacenará el dato leído desde la celda de Excel, a la cual se hará
referencia mediante su columna y su fila. Los tipos de variables se estudiaron al principio del
capítulo. Para efectuar un primer control de los datos válidos que se admiten en la variable se
la debe declarar previamente con la instrucción Dim.
rango: es una cadena de texto o cadena alfanumérica formada por la letra de la columna y el
número de fila de la celda desde donde se quiere tomar el dato. Es decir, por ejemplo, que
para la celda A1 se deberá usar la cadena alfanumérica “A1”, para la celda C4 se deberá usar
una cadena alfanumérica “C4” o bien una operación que arroje ese resultado, como ser
“C”+”4”.

La instrucción Range no despliega ningún cuadro de texto ni mensaje aclaratorio, sino que pro-
cede directamente a la lectura del valor almacenado en la celda de Excel referenciada y luego
efectúa el almacenamiento de dicho valor en la variable indicada en la instrucción.

Ejemplos:
A B
1 Número real 14
N N = Range ( “B1” ) .Value 2
3

A B
1 Gómez, Luis
Nombre$ Nombre$ = Range ( “A1” ) .Value 2
3

A B
1 Límite inferior 1
x0 = Range ( “B1” ) .Value 2 Límite superior 10
x0 , x1 , h x1 = Range ( “B2” ) .Value 3 Incremento 0,5
h = Range ( “B3” ) .Value 4

C D E
A A = Range ( “D10” ).Value 9
10 420,75
11

Página 7
Informática

Instrucción Cells

Existe otro método para leer valores desde las celdas de Excel, utilizando la identificación de las
celdas mediante dos números, el de la fila y el de la columna. Así por ejemplo la celda A1 se
identifica como Cells(1,1), la celda B4 se podría referenciar como Cells(4,2), etc. La sintaxis
correspondiente para esta instrucción es la siguiente:

variable = Cells ( fila , columna ) .Value

donde:
variable: es la variable que almacenará el dato leído desde la celda de Excel, a la cual se hará
referencia mediante su fila y su columna. Los tipos de variables se estudiaron al principio del
capítulo. Para efectuar un primer control de los datos válidos que se admiten en la variable se
la debe declarar previamente con la instrucción Dim.
fila: es un número entero, una operación matemática o variable numérica que almacene un
valor entero, el cual hace referencia al número de fila de la celda que se desea utilizar.
columna: es un número entero, una operación matemática o variable numérica que almacene
un valor entero, el cual hace referencia al número de columna de la celda que se desea utilizar.

La instrucción Cells tampoco despliega ningún cuadro de texto ni mensaje aclaratorio, sino que
procede directamente a la lectura del valor almacenado en la celda de Excel referenciada y luego
efectúa el almacenamiento de dicho valor en la variable indicada en la instrucción.

Ejemplos:
A B
1 Número real 14
N N = Cells ( 1 , 2 ) .Value 2
3

A B
1 Gómez, Luis
Nombre$ Nombre$ = Cells ( 1 , 1 ) .Value 2
3

A B
x0 = Cells ( 1 , 2 ) .Value 1 Límite inferior 1
x0 , x1 , h x1 = Cells ( 2 , 2 ) .Value 2 Límite superior 10
h = Cells ( 3 , 2 ) .Value 3 Incremento 0,5
4

C D E

A A = Cells ( 10 , 4 ) .Value 9
10 420,75
11

Página 8
Informática

Salida de Información
Existen diferentes instrucciones para visualizar los resultados obtenidos en un procedimiento. Se
pueden presentar los resultados por pantalla o por impresora. La salida por pantalla también tiene
distintas opciones, como ser la visualización en un cuadro de mensaje o la transferencia de los
resultados a las celdas de una hoja de cálculo Excel.

Salida en un cuadro de mensaje

MsgBox ( mensaje )

donde:
mensaje: es una cadena de texto o cadena alfanumérica, que puede ser enviada en forma dire-
cta, encerrada entre comillas, o almacenando la información previamente en una variable al-
fanumérica.

Mediante la instrucción MsgBox se despliega en la pantalla un cuadro de mensaje con la infor-


mación que se quiere visualizar. Esta información puede consistir en un número o bien en una
cadena de texto que incluya la información numérica y además una explicación de dicho resul-
tado, para mejor comprensión del usuario del programa.

Ejemplos:

MsgBox ( C )
C

La instrucción visualiza el valor numérico de la variable C

MsgBox (“La superficie es ” + STR$( S ) )


"Superficie " ; S
La instrucción visualiza un cuadro de mensaje con la cadena
alfanumérica “La superficie es” y luego el valor numérico de la
variable S.

MsgBox (“Raíz = ” + STR$( xr ) + CHR$(13) + “Error = ” + STR$( er ) )


"Raiz = " ; xr
"Error = " ; er La instrucción visualiza un cuadro de mensaje con dos renglones. En
el renglón superior imprime la cadena alfanumérica “Raíz = ” y luego
el valor numérico de la variable xr, a continuación se produce un salto
de línea con la función CHR$(13), y en el segundo renglón se visua-
liza otra información, consistente en la cadena alfanumérica “Error = ”
y el valor de la variable er.

Página 9
Informática

Salida de información a las celdas de Excel


Instrucción Range

Range ( rango ) .Value = expresión

donde:
rango: es una cadena de texto o cadena alfanumérica formada por la letra de la columna y el
número de fila de la celda donde se desea escribir la información. Es decir, por ejemplo, que
para la celda A1 se deberá usar la cadena alfanumérica “A1”, para la celda C6 se deberá usar
una cadena alfanumérica “C6” o bien una operación que arroje ese resultado, como ser “C”+
“6”.
expresión: es un argumento que admite varias opciones, como ser una variable numérica, una
constante numérica, una variable alfanumérica, una constante alfanumérica, o una operación
que arroje resultados numéricos o alfanuméricos.

La instrucción Range no despliega ningún cuadro de mensaje como lo hace MsgBox, ni espera
que se oprima el botón Aceptar para continuar con el programa, sino que procede directamente a
escribir la información en la celda de Excel a la que se hace referencia, y luego continúa con la
siguiente instrucción del código.

Ejemplos:

Range (“A1”) .Value = “El acumulado es”


AC Range (“B1”) .Value = AC
A B C
1 El acumulado es 40
Las instrucciones anteriores imprimen la información 2
obtenida en las celdas A1 y B1 de Excel, como se 3
aprecia en el ejemplo.

Range (“A1”) .Value = “Ancho”


A B C
Range (“B1”) .Value = A
1 Ancho 5
A,H,S Range (“A2”) .Value = “Altura” 2 Altura 10
Range (“B2”) .Value = H 3 Superficie 50
Range (“A3”) .Value = “Superficie” 4
Range (“B3”) .Value = S

Las instrucciones anteriores imprimen los títulos en la columna A y los valores de los datos o los
resultados obtenidos en la columna B, con lo cual se obtiene una planilla más completa.

Titulo$ = “Meses” A B C D
1 Meses
Range (“C1”) .Value = Titulo$
Titulo$ 2
3
En este ejemplo se imprime una variable alfanumérica que almacena la
palabra “Meses”, en la celda C1.

Página 10
Informática

Instrucción Cells

Existe otro método para escribir valores en las celdas de Excel, utilizando la identificación de las
celdas mediante dos números, el de la fila y el de la columna. De manera similar al proceso de
lectura de las variables desde la hoja de Excel, necesitaremos el número de fila y el número de
columna, así por ejemplo la celda A1 se identifica como Cells( 1, 1 ) y la celda B4 se referencia
como Cells( 4, 2 ). La sintaxis correspondiente para esta instrucción cuando la utilizamos para
impresión es la siguiente:

Cells ( fila , columna ) .Value = expresión

donde:
fila: es un número entero, una operación matemática o variable numérica que almacene un
valor entero, el cual hace referencia al número de fila de la celda que se desea utilizar.
columna: es un número entero, una operación matemática o variable numérica que almacene
un valor entero, el cual hace referencia al número de columna de la celda que se desea utilizar.
expresión: es una expresión que puede ser una variable numérica que contenga un dato, o un
resultado de un cómputo anterior, como así también alguna variable o cadena alfanumérica.
También se verá en los ejemplos la posibilidad de combinar cadenas alfanuméricas con valo-
res numéricos de manera de facilitar la comprensión de la información impresa.

La instrucción Cells tampoco despliega ningún cuadro de mensaje en pantalla como lo hacía
MsgBox, sino que procede directamente a la escritura del valor o resultado del argumento expre-
sión en la celda de Excel seleccionada mediante la fila y la columna. Dicho contenido queda es-
crito en la celda con la posibilidad de usarse posteriormente, tanto en una lectura o en algún
cálculo sucesivo.

Ejemplos:

Cells ( 1, 1 ) .Value = “El acumulado es”


AC Cells ( 1, 2 ) .Value = AC
A B C
1 El acumulado es 40
2
3

Las instrucciones anteriores imprimen la información obtenida en las celdas de la fila 1, en las
columnas 1 y 2, es decir A1 y B1, de Excel, como se aprecia en el ejemplo.

Cells ( 1, 1 ) .Value = “Ancho”


A B C
Cells ( 1, 2 ) .Value = A
1 Ancho 5
A,H,S Cells ( 2, 1 ) .Value = “Altura” 2 Altura 10
Cells ( 2, 2 ) .Value = H 3 Superficie 50
Cells ( 3, 1 ) .Value = “Superficie” 4
Cells ( 3, 2 ) .Value = S

Las instrucciones anteriores imprimen los títulos en la columna A y los valores de los datos o los
resultados obtenidos en la columna B, con lo cual se obtiene una planilla más completa.

Página 11
Informática

Titulo$ = “Meses” A B C D
Cells ( 1, 3 ) .Value = Titulo$ 1 Meses
2
Titulo$
3

En este ejemplo se imprime una variable alfanumérica que almacena la


palabra “Meses”, en la celda de la fila 1 y la columna 1, es decir C1.

Codificación del Ejercicio 2.1

En este punto ya contamos con las instrucciones necesarias para codificar todos los diagramas de
flujo del Capítulo 2, por lo que a continuación programamos como ejemplos en Visual Basic el
Ejercicio 2.1 del cálculo de la superficie de un rectángulo y el Ejercicio 2.5 del cálculo del resto r
en un división de dos números enteros m y n.

Ejercicio 2.1:

Inicio Sub Ejercicio_2_1 ( )


Dim L as Single
L,A Dim A as Single
Dim S as Single
S=A*L L = InputBox (“Ingrese el lado L en mts”)
A = InputBox (“Ingrese el ancho A en mts”)
L,A,S
S=A*L
MsgBox (“Lado = ” + Str$(L) + “ mts”)
MsgBox (“Ancho = ” + Str$(A) + “ mts”)
Fin
MsgBox (“Superficie = ” + Str$(S) + “ m2”)
End Sub

Ejercicio 2.5:

Inicio
Sub Ejercicio_2_5 ( )
Dim m as Integer
m,n
Dim n as Integer
Dim c as Single
c=m/n
Dim r as Integer
m = InputBox (“Ingrese un número entero m”)
c = ENT(c)
n = InputBox (“Ingrese un número entero n”)
r=m-c*n
c=m/n
c = INT ( c )
r=m–c*n
r
MsgBox (“El resto r es = ” + Str$(r) )
End Sub
Fin

Página 12
Informática

Ejercicio 3:

Inicio Sub Ejercicio_3 ( )


Dim L as Single, A as Single
L,A Dim P as Single, S as Single
L = InputBox (“Ingrese el lado L”)
P=2*(L+A) A = InputBox (“Ingrese el ancho A”)
P=2*(L+A)
P > 12 Si
If P > 12 Then
S=L*A
S=L*A
MsgBox (“Superficie = ” + Str$(S))
End If
No "Superficie =" , S
End Sub

Fin

Ejercicio 7:

Sub Ejercicio_7 ( )
Dim A as Single, B as Single, C as Single
Dim D as Single, X1 as Single, X2 as Single
A = InputBox (“ a = ”)
B = InputBox (“ b = ”)
C = InputBox (“ c = ”)
D=B^2–4*A*C
Página 13
Informática

If D >= 0 Then
X1 = ( – B + D ) / ( 2 * A )
X2 = ( – B – D ) / ( 2 * A )
MsgBox (“ x1 = ” + Str$( X1))
MsgBox (“ x2 = ” + Str$( X2))
End If
End Sub

Ejercicio 8:

Sub Ejercicio_8 ( )
Dim C as Integer, AC as Integer
Dim N as Integer
C=0
AC = 0
N = InputBox (“Ingrese la cantidad n”)
Do
C=C+1
If C > N Then Exit Do
AC = AC + C
Loop
MsgBox (“Acumulador = ” + Str$( AC ))
End Sub

Declaración y Dimensionamiento de Vectores y Matrices


Los vectores y las matrices se deben declarar obligatoriamente. Es necesaria su declaración y
dimensionamiento por tratarse de variables subindicadas. Además es recomendable asignarles en
ese momento el tipo de datos que podrán almacenar.
Existen dos tipos de dimensionamiento para estas variables: el dimensionamiento estático y el
dimensionamiento dinámico. El dimensionamiento estático se efectúa con la instrucción Dim,
especificando entre paréntesis la cantidad de elementos de la variable en el momento de su
declaración. El dimensionamiento dinámico se realiza con la sucesión de la instrucción Dim con
los paréntesis vacíos, y luego la instrucción Redim una vez conocida la cantidad de elementos de
la variable, como se verá en los ejemplos.

Página 14
Informática

Dimensionamiento Estático
Ejemplos:

En estos ejemplos se muestra cómo utilizar la instrucción Dim para declarar matrices y vectores.
El límite inferior predeterminado para los subíndices de vectores o matrices es 0 y se puede
modificar en el nivel de módulo mediante la instrucción Option Base.

Dim A(14) as Single


Dim C(100,5) as Double
Dim Alumno$(100,4)
Dim x(20) as Integer

También se pueden dimensionar variables indicando específicamente el límite inferior y el límite


superior.

Dim MatrizA(1 To 5, 4 To 9) as Double


Dim NotaAlumno(1 To 10) as Single
Dim Periodo(1990 To 2010) as Integer

Dimensionamiento Dinámico
Ejemplos:

A continuación se muestran ejemplos de declaración dinámica de vectores y matrices. El primer


paso es utilizar la instrucción Dim con el nombre de la variable y los paréntesis vacíos, sin
especificar sus dimensiones. Luego, una vez conocidas sus dimensiones, y almacenadas en las
variables correspondientes, utilizar la instrucción Redim completa como se ve a continuación.

Dim A( ) as Single


Redim A(n,m) as Single

Dim B( ) as Double


Redim B(n) as Double

Dim Mat( ) as Double




Redim Mat(n,m+1) as Double

Página 15
Informática

Declaración de Vectores y Matrices


Los vectores y las matrices se deben declarar obligatoriamente. Es necesaria su declaración y
dimensionamiento por tratarse de variables subindicadas. Además es recomendable asignarles en
ese momento el tipo de datos que podrán almacenar.
Existen dos tipos de dimensionamiento para estas variables: el dimensionamiento estático y el
dinámico. El dimensionamiento estático se efectúa con la instrucción Dim, especificando entre
paréntesis la cantidad de elementos de la variable en el momento de su declaración. El
dimensionamiento dinámico se realiza con la sucesión de la instrucción Dim con los paréntesis
vacíos, y luego la instrucción Redim una vez conocida la cantidad de elementos de la variable,
como se verá en los ejemplos.

Dimensionamiento Estático
Ejemplos:

En estos ejemplos se muestra cómo utilizar la instrucción Dim para declarar matrices y vectores.
El límite inferior predeterminado para los subíndices de vectores o matrices es 0 y se puede
modificar en el nivel de módulo mediante la instrucción Option Base.

Dim A(14) as Single


Dim C(100,5) as Double
Dim Alumno$(100,4)
Dim x(20) as Integer

También se pueden dimensionar variables indicando específicamente el límite inferior y el límite


superior.

Dim MatrizA(1 To 5, 4 To 9) as Double


Dim NotaAlumno(1 To 10) as Single
Dim Periodo(1990 To 2010) as Integer
Página 16
Informática

Dimensionamiento Dinámico
Ejemplos:

A continuación se muestran ejemplos de declaración dinámica de vectores y matrices. El primer


paso es utilizar la instrucción Dim con el nombre de la variable y los paréntesis vacíos, sin
especificar sus dimensiones. Luego, una vez conocidas sus dimensiones, y almacenadas en las
variables correspondientes, utilizar la instrucción Redim completa como se ve a continuación.

Dim A( ) as Single


Redim A(n,m) as Single

Dim B( ) as Double


Redim B(n) as Double

Dim Mat( ) as Double




Redim Mat(n,m+1) as Double

Página 17
Informática

Trabajo Práctico de Programación en Excel


A continuación desarrollamos el procedimiento a seguir para hacer el primer trabajo práctico
en Excel, tomando como referencia el Ejercicio 2.1 del Capítulo 2.

1.- En primer lugar se nos presentará una pantalla similar a la que muestra la figura.

2.- Ubicándonos con el mouse en el extremo superior derecho, en la zona vacía de las barras de
íconos y oprimiendo el botón derecho del mouse, encendemos la barra de íconos del Visual
Basic.

Página 1
Informática

3.- Cuando encendemos la barra de íconos del Visual Basic es probable que aparezca en el centro
de la planilla, como se ve en la figura:

4.- Con el mouse la arrastramos hasta la parte superior tomándola en la zona azul del título y la
dejamos al lado de alguna de las otras barras de íconos que generalmente están encendidas.

Página 2
Informática

5.- A continuación grabaremos un programa en blanco con el fin de que el Excel arme la
estructura básica que luego pasaremos a completar. Oprimimos con el botón izquierdo del mouse
el icono de Grabar Macro que se ve en la figura:

6.- A continuación se nos presenta un cuadro de diálogo en el cual se sugiere un nombre para el
programa, que generalmente es Macro1, y lo aceptamos con el botón Aceptar. Posteriormente se
puede cambiar si así lo deseamos.

Página 3
Informática

7- En cuanto aceptamos el cuadro anterior, el Excel comenzará a grabar nuestras acciones, pero
como solamente deseamos grabar un programa en blanco para utilizar su estructura, procedemos
a finalizar la grabación con el icono Detener grabación como se muestra en la figura:

8.- Una vez grabada la estructura del programa debemos acceder a ella para poder completarla,
entonces seleccionamos el icono Editor de Visual Basic señalado en la figura, que nos llevará al
entorno de programación de la planilla Excel.

Página 4
Informática

9.- El entorno de programación del Visual Basic al cual accedemos es totalmente diferente a la
planilla de cálculo Excel, como se ve en la figura. En la zona superior izquierda del entorno se
presenta un pequeño explorador de proyectos, y debemos seleccionar el Módulo1 y efectuar un
doble clic para hacer visible el editor de Visual Basic donde escribiremos el programa.

10.- Una vez ejecutado el doble clic se nos presenta en la parte derecha un editor, con la
estructura creada de un programa llamado Macro1( ), con las palabras Sub y End Sub, pero su
interior permanece en blanco excepto algunas líneas que figuran en letras verdes y comienzan
con un apóstrofe, las que se utilizan para hacer aclaraciones.

Página 5
Informática

11.- Una vez creada la estructura del programa Macro1( ), lo completamos ubicándonos en una
línea en blanco que no tenga apóstrofe y que se encuentre dentro de la zona demarcada por las
palabras Sub y End Sub. En ese lugar comenzamos a escribir las primeras instrucciones Dim
desarrolladas en clase y avanzamos oprimiendo Enter al final de cada línea.

12.- Terminamos de escribir el programa completo, con lo cual la pantalla se verá de manera
similar a la figura siguiente:

Página 6
Informática

13.- El paso siguiente será ejecutar el programa. Para ello tenemos dos opciones: Con la tecla de
función F5 ejecutamos el programa normalmente y con la tecla de función F8 lo ejecutamos Paso
a Paso, señalando en amarillo la línea que se va a ejecutar. Elegimos el segundo método por ser
la primera vez, lo cual nos sirve además para interpretar mejor las acciones de la computadora.
Oprimimos entonces la tecla de función F8 y la pantalla mostrará lo siguiente:

14.- Para pasar a la siguiente línea nuevamente utilizamos la tecla de función F8.

Vemos así como se procesan las instrucciones Dim y la línea amarilla salta a la próxima
instrucción InputBox.

Página 7
Informática

15.- Al oprimir nuevamente la tecla F8 se ejecuta la instrucción InputBox, desplegando en la


pantalla un cuadro de diálogo que nos muestra un mensaje y tiene un sector en blanco donde
podremos ingresar un valor.

16.- A continuación ingresamos un valor, por ejemplo 14, y seleccionamos Aceptar o


simplemente oprimimos la tecla Enter.

Página 8
Informática

17.- Luego de avanzar con la tecla F8 para ejecutar paso a paso el programa, y después de haber
ingresado un valor para el lado y un valor para el ancho del rectángulo, la pantalla mostrará el
cálculo de S en color amarillo, indicando que ésta será la próxima línea a ejecutar.

18.- Oprimiendo nuevamente la tecla F8 se ejecuta el proceso de S = a * l , y a continuación se


ejecutará la instrucción MsgBox, desplegando un cuadro de mensaje como muestra la siguiente
figura:

Este cuadro combina el texto “La superficie es” con el valor numérico 140 que se obtuvo como
resultado del cálculo, y luego nuevamente el texto “cm2”.

Página 9
Informática

19.- Luego de seleccionar el botón Aceptar pasamos a la línea siguiente, donde se encuentra la
instrucción End Sub con la que se finaliza el programa.

20.- Oprimimos nuevamente la tecla F8 para que se ejecute la instrucción End Sub y al hacerlo
nos encontraremos con una pantalla como la siguiente figura:

Notamos que ninguna línea está señalada en amarillo, por lo tanto hemos terminado de ejecutar
el programa. Podemos probar ahora una nueva ejecución cambiando los valores del lado y del
ancho del rectángulo, con lo cual irá cambiando el valor de la superficie.

Página 10
Informática

21.- Es posible también ejecutar el programa desde la planilla del Excel, a diferencia de lo visto
anteriormente ya que nos encontrábamos en el entorno de programación Visual Basic. Para dar
comienzo a un programa desde la planilla Excel debemos seleccionar el icono Ejecutar Macro
como se ve en la figura:

22.- Se nos presenta un cuadro con los diferentes programas o macros disponibles, y elegimos
entonces el programa de la superficie del rectángulo que debe figurar con el nombre Macro1.

Página 11
Informática

23.- A continuación comenzará la ejecución del programa, con las pantallas ya explicadas en los
pasos anteriores. Iremos ingresando los valores del lado y del ancho de un rectángulo, la
computadora calculará la superficie y desplegará un mensaje con el resultado.

Página 12

También podría gustarte