117 lines
3.7 KiB
Plaintext
117 lines
3.7 KiB
Plaintext
#include <basico.h>
|
|
|
|
#define TOTAL_BINES 10
|
|
|
|
algoritmo
|
|
|
|
/* verifica y obtiene argumento: tamaño de muestra*/
|
|
tamaño muestra=0
|
|
//obtener total argumentos
|
|
//es distinto a '2', entonces{ terminar }
|
|
//obtener parámetro numérico(2), mover a 'tamaño muestra'
|
|
/* algo menos natural, pero más claro para una mente formal: */
|
|
obtener total argumentos
|
|
si ' es distinto a( 2 ) '
|
|
terminar
|
|
sino
|
|
guardar ' parám numérico(2)' en 'tamaño muestra'
|
|
fin si
|
|
|
|
/* establece la escala para desplegar barras */
|
|
escala = 1.0
|
|
si ' #(tamaño muestra > 50) '
|
|
#( escala = 50.0 / tamaño muestra )
|
|
fin si
|
|
|
|
/* Generar muestra de tamaño "tamaño muestra" */
|
|
dimensionar con ( tamaño muestra) matriz aleatoria entera ( 10, muestra )
|
|
|
|
decimales '3'
|
|
|
|
/* Genera tabla de clases con 10 bines */
|
|
tabla de clases=0
|
|
bines(TOTAL_BINES, muestra), mover a 'tabla de clases'
|
|
|
|
/* Imprime tabla de clases */
|
|
ir a subrutina( desplegar tabla de clases)
|
|
|
|
/* Calcula promedio según tabla de clases */
|
|
promedio tabla=0, FREC=0, MC=0
|
|
ir a subrutina ( calcular promedio de tabla de clases )
|
|
|
|
/* Calcula desviación estándar y varianza */
|
|
desviación estándar=0, varianza=0
|
|
ir a subrutina ( calcular desviación estándar y varianza )
|
|
|
|
/* Calcula promedio de la muestra completa e imprime medidas */
|
|
ir a subrutina ( desplegar medidas y medias )
|
|
|
|
/* Construye barras */
|
|
tamaño barras=0, barras=0
|
|
ir a subrutina( construir barras para histograma ), mover a 'barras'
|
|
|
|
/* arma histograma de salida */
|
|
sMC=0
|
|
ir a subrutina( construir y desplegar histograma )
|
|
|
|
terminar
|
|
|
|
subrutinas
|
|
|
|
desplegar tabla de clases:
|
|
token.separador '"\t"'
|
|
imprimir '#(utf8("Tamaño de la muestra = ")), tamaño muestra,NL,NL,\
|
|
#(utf8("Números entre 0 y 10\n\n")),\
|
|
" --RANGO--\tM.DE C.\tFREC.\tF.R\t F.A.\tF.R.A.\n",\
|
|
"-----------------------------------------------------\n"'
|
|
imprimir 'justificar derecha(5,#(string(tabla de clases))), NL'
|
|
|
|
retornar
|
|
|
|
desplegar medidas y medias:
|
|
promedio muestra=0
|
|
muestra, promediar, mover a 'promedio muestra'
|
|
|
|
imprimir ' "Media de la muestra = ", promedio muestra, NL,\
|
|
"Media de la tabla = ", promedio tabla, NL,\
|
|
"Varianza = ", varianza, NL,\
|
|
#(utf8("Desviación estandar = ")), desviación estándar,NL'
|
|
retornar
|
|
|
|
construir barras para histograma:
|
|
#(tamaño barras = int(FREC * escala * 5))
|
|
|
|
dimensionar con (TOTAL_BINES) matriz rellena ("*", barras)
|
|
#(barras = replicate( barras, tamaño barras))
|
|
retornar ' barras '
|
|
|
|
construir y desplegar histograma:
|
|
#(sMC = string(MC))
|
|
unir columnas( sMC, sMC, justificar derecha(5,#(string(FREC))), barras )
|
|
|
|
/* Imprime histograma */
|
|
token.separador '" "'
|
|
imprimir ( " M.C. FREC.\n-----------\n",\
|
|
sMC,NL )
|
|
|
|
retornar
|
|
|
|
calcular promedio de tabla de clases:
|
|
//[1:filasde(tabla de clases), 3] coger (tabla de clases), mover a 'MC'
|
|
//[1:filasde(tabla de clases), 4] coger (tabla de clases), mover a 'FREC'
|
|
/* un poco menos natural, pero más claro para una mente formal: */
|
|
#basic{
|
|
MC = tabla de clases[ 1:TOTAL_BINES, 3]
|
|
FREC = tabla de clases[ 1:TOTAL_BINES, 4]
|
|
}
|
|
borrar intervalo
|
|
multiplicar(MC,FREC), calcular sumatoria, dividir entre (tamaño muestra),
|
|
mover a 'promedio tabla'
|
|
retornar
|
|
|
|
calcular desviación estándar y varianza:
|
|
restar( MC, promedio tabla), elevar al cuadrado, por (FREC),
|
|
calcular sumatoria, dividir entre(tamaño muestra), copiar en 'varianza'
|
|
calcular raíz, mover a 'desviación estándar'
|
|
retornar
|