Reporte de calificaciones en Visual Basic
Un programa completo: consultar un diccionario, ordenar por promedio, ponerle letra.
' Promedia las notas de quiz por estudiante e imprime una boleta con ranking.
Module GradeReport
Sub Main()
Dim scores As New Dictionary(Of String, Integer()) From {
{"ada", {92, 88, 99}},
{"grace", {85, 91, 78}},
{"alan", {70, 82, 88}}
}
Dim ranked = From entry In scores
Let mean = entry.Value.Average()
Order By mean Descending
Select name = entry.Key, mean
Console.WriteLine("student mean grade")
For Each row In ranked
Dim line = $"{row.name,-10}{row.mean,7:F1} {LetterFor(row.mean)}"
Console.WriteLine(line)
Next
End Sub
Function LetterFor(mean As Double) As String
If mean >= 90 Then Return "A"
If mean >= 80 Then Return "B"
Return "C"
End Function
End Module
Cómo funciona
Let mean = ...calcula una vez y nombra el resultado dentro de la consulta.Select name = entry.Key, meanda forma a filas de resultado anónimas.- Una
Functionauxiliar en el mismo Module convierte promedios en letras.
Palabras clave y builtins usados aquí
DimDoubleEachEndForFunctionIfIntegerLetModuleNewNextOfReturnSelectStringSubThen
El intento, en números
- Líneas
- 28
- Caracteres a escribir
- 677
- Tokens
- 158
- Ritmo de tres estrellas
- 80 tpm
Al ritmo de tres estrellas de 80 tokens por minuto, este intento toma unos 118 segundos.
Paso 1 de 2 en Bis; paso 28 de 29 en Fundamentos del lenguaje.