La siguiente macro la vamos a dedicar a obtener algunas estadísticas de notas de un conjunto de alumnos.
Para cada alumno calcularemos el número de aprobados y desaprobados, su promedio, su varianza, desviación estándar.
Para todos los alumnos obtendremos el promedio, varianza, desviación estándar, coeficiente de variación para ver la homogeneidad de las notas de la sección.
Vamos a procesar n alumnos (nAl), por cada alumno leeremos 4 notas.
Cada vez que se lea las notas de un alumno, calcularemos:
La suma en SNotas.
También iremos sumando para las estadísticas de todos los alumnos:
STot,
STot2,
TAp (total de aprobados),
TDes (total de desaprobados).
Cada vez que se termine de ingresar las 4 notas de un alumno, imprimiremos su promedio y el mensaje si está aprobado o desaprobado.
Una vez concluido la lectura de notas de todos los nAl alumnos, calcularemos:
El número de aprobados TAp y desaprobados TDes,
Promedio general PromGen,
La varianza VarGen,
La desviación estándar DestGen,
El coeficiente de variación CvGen.
Bien.
En el programa usaremos la mayor cantidad de líneas de comentario a fin de explicar cada línea del código
Empecemos abriendo el libro donde están grabadas nuestras macros anteriores.
Abra el archivo "MisMacros.xlsm" o haga clic aquí
Usando [Alt] + F11, entramos al editor.
Inserte un nuevo módulo. Si observa la ventana de proyectos verá que tenemos 5 módulos.
Digite Sub Notas y presione [Intro].
Dentro de este procedimiento digitaremos:
' ...........Declaración variables
' .......... De tipo Double (con decimales)
DIM STot2, Prom, PromGen, VarGen, DestGen, CvGen As Double
' ............ De tipo Integer (números enteros)
DIM nAl, TAp, TDes, STot, SNotas, Nota As Integer
' .....Lectura de nAl, númerode alumnos a ser procesados
' ...... Ponemos en cero las variables de acumulaciòn (sumas)
STot = STot2 = Tap = TDes = SNotas = 0
' ....... Ingresamos un valor para nAl, que indicará el número de alumnos a procesar
nAl = Val(InputBox(“Nro alumnos a procesar:”))
' .......Para procesar los nAl, usaremos For
'
For I = 1 To nAl
' ......... Cuando I valga 1, leeremos las 4 notas de este primer alumno usando otro For
For j = 1 To 4
Nota = Val(InputBox(“Nota : “ & j))
' ...... Observa que en el InputBox podemos combinar mensajes con variables usando &. Todo ello para facilitar el ingreso de datos
' ....... Cada nota que se ingresa debe sumarse a un total del alumno (SNotas) y a un total de todos los alumnos (STot) y en STot2 para obtener la varianza
SNotas = SNotas + Nota
STot = STot + Nota
STot2 = STot2 + Nota*Nota
Next ‘ …… Leyó las notas de un alumno y procede a calcular su promedio y ver si tiene promedio aprobatorio
Prom = SNotas/4
‘ …… Si Prom es mayor a 10, promedio aprobatorio en caso contrario, desaprobatorio y los cuenta
If Prom > 10 Then
TAp = TAp + 1
Else
TDes = TDes +1
End If
‘ …… Pone en cero SNotas para sumar las notas del siguiente alumno
‘ …… Terminó con un alumno y vuelve a realizar lo mismo con el siguiente alumno
Next
‘ …… Terminó con todos los alumnos
‘ …… Ahora calcula estadìsticas con todos los alumnos
PromGen = STot/(nAl*4)
VarGen = (STot2-nAl*PromGen*PromGen)/(nAl*4-1)
' ........ Calcula la desviación estándar de las notas de todos los alumnos
DestGen = Sqr(VarGen)
' ....... Ahora calcula el coeficiente de variación de las noas de todos los alumnos
CvGen = DestGen/PromGen
‘ …… Impresión d resultados
MsgBox(“Promedio general: “ & PromGen )
MsgBox(“Número de alumnos con promedio aprobatorio: “ & Tap & “ y desaprobatorio: “ & TDes)
MsgBox(“Varianza de las notas de la sección: “ & VarGen)
MsgBox(“Desviación estándar: “ & DestGen)
' ....... Decidirá el nivel de homogeneidad de las notas
If CvGen < 0.20 Then
MsgBox(“Las notas son bastante homogéneas: “ & CvGen*100 & “ %”)
Else
If CvGen < 0.40 Then
MsgBox(“Las notas son moderadamente homogéneas: “ & CvGen*100 & “ %”)
Else
MsgBox(“Las notas son heterogéneas: “ & CvGen*100 & “ %”)
End If
End If
End Sub
La imagen siguiente muestra una parte de este procedimiento
Grabe el archivo con el mismo nombre.
En la siguiente sesión veremos otra aplicación del uso de If, para ello haga clic aquí