Está en la página 1de 7

Facultad de Ingeniería

Programa de Ingeniería de Sistemas


Programación I
Taller

CASO DE ESTUDIO: EVALUACIÓN 
APTITUD INFORMÁTICA 
1. ENUNCIADO 
 
En  una  universidad  se  efectúa  una  evaluación  para  medir  la  Aptitud  en  informática  de   los 
nuevos  estudiantes  que  ingresan,  la  prueba  consta  de  ​ N  preguntas de escogencia múltiple y 
cada   pregunta  tiene  ​ 5  opciones  para  escoger  la  respuesta.  En  un  vector/arreglo  se  graban 
las respuestas correctas a las ​ N​ preguntas. 
 
Ejemplo del arreglo: para ​ N​ = 10 
 
RespuestaCorrecta[10] 
 
 ​      [0]            [1]  [2]   [3]        [4]           [5]             [6]                [7]                 [8]               [9] 

 5  3   2   1   4   2   1   4   5   2  
 
Esto es: la respuesta correcta a la primera pregunta (​ RespuestaCorrecta[0]​ ) es la opción ​

(recuerde que es escogencia múltiple y hay cinco opciones). 
RespuestaCorrecta[0] = 5 
RespuestaCorrecta[1] = 3 
 
Nota​: validar el dato de entrada ​ RespuestaCorrecta[N]​ , debe estar entre ​ 1​
 y ​5​

 
A la prueba se presentan ​ M​
 estudiantes. Para cada uno de ellos se tienen los siguientes 
datos: 
● Número de identificación. 
● Puntaje Aptitud en informática. 
Para  el  puntaje  por  estudiante  se  debe  pedir  como  dato  de  entrada  cada  una  de  las 
respuestas  a  las  ​
N  preguntas  dadas  por  cada  uno  de  los  ​
M  estudiantes,  el algoritmo deberá 
comparar  cada  una  de  las  respuestas  del  estudiante  con  el  arreglo  que  contiene  las 
respuestas  correctas, por cada acierto se dará un punto  al estudiante. El puntaje máximo que 
puede tener un estudiante es ​ N​  (si tiene todas las respuestas correctas). 
 
Para esto debe definir dos arreglos de ​ M​ elementos, ​Est_Identificacion[M]​  donde guardará 
las ​
M​ credenciales, y ​ Est_Puntaje[M]​  donde se guardará el resultado o puntaje de cada uno 
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
Taller

de los estudiantes. Elabore un algoritmo que basándose en la información anterior provea la 
siguiente: 
 
● El puntaje obtenido por cada uno de los ​ M​ estudiantes en la prueba con su respectivo 
número de identificación. 
● El puntaje promedio de la prueba. 
● La credencial y el puntaje correspondiente a los estudiantes que obtuvieron un 
puntaje igual o superior al promedio. 
● El mayor puntaje y la identificación del estudiante que lo obtuvo. 
 
Contexto del caso: 
El  concepto  evaluación  para  algunos   autores   aparece  en  el  siglo  XIX  con  el  proceso  de 
industrialización  que  se  produjo  en  Estados   Unidos.  En  este  marco  surge  el  moderno 
discurso  científico  en  el  campo  de  la  educación,  que  va  a  incorporar  términos  tales  como 
tecnología  de  la  educación,  diseño  curricular,  objetivos  de  aprendizaje  o  evaluación 
educativa.  Para  otros  autores  la  concepción  aparece  con  los  mismos  comienzos  de  la 
sociedad,  la  cual  siempre  ha  buscado  dar  juicios   de  valor  a  las  acciones  y  actitudes  de  los 
estudiantes.  La  evaluación  como  disciplina  ha  sufrido  profundas  transformaciones 
conceptuales y funcionales a lo largo de la historia y especialmente en el siglo XX y XXI. 
 
Pero  quien  tradicionalmente  es  considerado  como  el  padre  de  la  evaluación  educativa  es 
Ralph  Tyler   por  ser  el  primero  en  dar  una  visión  metódica  de  la  misma,  ­  este  concepto  ha 
sido   superado  desde  el  conductismo­  ,  Tyler  plantea   la  necesidad  de  una  evaluación 
científica  que  sirva  para  perfeccionar  la  calidad  de  la  educación.  La  evaluación  como  tal  
desde  esta  perspectiva  ya  no  es una simple medición porque supone un juicio de valor sobre 
la información recogida. 

2. ESTRUCTURA DE DATOS 
 
En  programación,  ​ un vector (llamado  en  inglés  ​array​(exactamente arreglo  unidimensional)) 
es  una  zona  de  almacenamiento  continuo,  que  contiene  una  serie  de  elementos  del  mismo 
tipo.  Estas  estructuras  de  datos  son  adecuadas  para  situaciones  en  las  que  el  acceso  a  los 
datos  se   realice  de  forma  aleatoria  e  impredecible.  Todo  vector  se  compone  de  un 
determinado  número  de  elementos.  Cada  elemento  es  referenciado  por  la  posición  que  
ocupa dentro del vector. Dichas posiciones son llamadas ​ índice​
 y siempre son correlativos. 
 
En programación, una ​ estructura de datos​  es una forma de organizar un conjunto de datos 
elementales con el objetivo de facilitar su manipulación. 
 
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
Taller

Datos de entrada: ​Para el caso, el arreglo o vector ​
RespuestaCorrecta[N]​  contendrá un 
número ​N​
 de datos, el siguiente ejemplo muestra ​N​ = 10 (​
N​
 es la cantidad de preguntas de la 
prueba) 
 
      [0]            [1] [2]   [3]        [4]           [5]             [6]                [7]                 [8]               [9] 

 5  3   2   1   4   2   1   4   5   2  
 
 
RespuestaCorrecta[0] = 5 
RespuestaCorrecta[1] = 3 
…… 
RespuestaCorrecta[9] = 2 
 
Para definir el arreglo en el algoritmo o programa de deben seguir los siguientes pasos: 
 
// Se solicita el número de preguntas y el dato entrante se asigna a N: 
// Se definen las variables 
int N, M, i, j, Respuesta, MayorPuntaje = 0; 
  float SumaPuntaje = 0.0; 
   
//Entrada de datos, respuestas correctas 
    do{ 
        cout<<"\n\nDigite cantidad de preguntas: "; 
        cin>>N; 
    }while(N < 1); 
 
// Se declara el arreglo llamado RespuestaCorrecta asignándole el rango (N): 
int RespuestaCorrecta[N]; 
 
Para el caso y de acuerdo al enunciado, se deben definir dos arreglos más, en donde se 
almacenarán los datos de los estudiantes que presentaron la prueba de aptitud informática. 
Para definir estos dos arreglos seguiremos los pasos anteriores: 
 
//Entrada de datos, cantidad de estudiantes 
    do{ 
        cout<<"\n\nDigite cantidad de estudiantes: "; 
        cin>>M; 
    }while(N < 1); 
 
// Se declara los arreglos para estudiantes asignándole el rango (M): 
int Est_Identificacion[M], Est_Puntaje[M]; 
 
 
 
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
Taller

3. REQUERIMIENTOS FUNCIONALES 
 
● RF1: ​El programa deberá calcular e imprimir el puntaje obtenido por cada uno de los 
M​ estudiantes en la prueba con su respectivo número de identificación. 
 
Para esto se debe inicializar el arreglo ​
Est_Puntaje[M] ​= 0, puesto que cada 
elemento contendrá la suma de los aciertos, por cada acierto se suma 1. Como son N 
preguntas, si el estudiante acierta en todas, su puntaje máximo será N. Esto permite 
limpiar los datos y asegurarnos que todos comienzan en cero. 
 
// Se inicializa en cero cada elemento del arreglo Est_Puntaje[M]  
for (i = 0; i < M; i++) 
        Est_Puntaje[i] = 0; 
 
● RF2:​ El programa deberá calcular e imprimir el puntaje promedio de la prueba. Para 
este requerimiento defina una variable, debe inicializar en cero. Almacene en esa 
variable la suma de todos los puntajes obtenidos por los estudiantes.  
 
for (i = 0; i < M; i++) 
        SumaPuntaje += Est_Puntaje[i]; 
 
// Se imprime puntaje promedio de la prueba 
cout<<"\n_____________________________________________"; 
cout<<"\nPromedio de los puntajes = "<<SumaPuntaje / M<<"\n"; 
cout<<"\n_____________________________________________"; 
 
● RF3: ​
El programa deberá imprimir la credencial y el puntaje correspondiente a los 
estudiantes que obtuvieron un puntaje igual o superior al promedio. 
 
// Estudiantes con puntaje mayor o igual al promedio 
cout<<"\n\nEstudiantes con puntaje mayor o igual al promedio"; 
for (i = 0; i < M; i++) 
if (Est_Puntaje[i] >= SumaPuntaje / M) 
cout<<"\n"<<Est_Identificacion[i]<<" ­> "<<Est_Puntaje[i]; 
 
● RF4: ​
El programa deberá buscar e imprimir el mayor puntaje y la identificación del 
estudiante que lo obtuvo. 
 
Para este requerimiento debe definir una variable e inicializar en cero, ésta 
almacenará el dato del mayor puntaje, el algoritmo deberá hacer sucesivas 
comparaciones con todos los puntajes obtenidos por los estudiantes y asegurarse de 
que en la variable quede el mayor de todos. 
 
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
Taller
for (i = 0; i < M; i++) 
  if(MayorPuntaje < Est_Puntaje[i]) 
  MayorPuntaje = Est_Puntaje[i]; 
  cout<<"\n_____________________________________________"; 
  cout<<"\nEstudiante(s) con Mayor Puntaje"; 
   
for (i = 0; i < M; i++) 
  if (Est_Puntaje[i] == MayorPuntaje) 
  cout<<"\n"<<Est_Identificacion[i]<<" ­> "<<Est_Puntaje[i]; 
cout<<"\n_____________________________________________"; 

4. REQUERIMIENTOS INSTRUCCIONALES 
Teniendo en cuenta el enunciado, los pasos a seguir para que se puedan entregar los 
requerimientos solicitados son: 
 
ANÁLISIS Y DISEÑO.  
Después de solicitar el dato de cantidad de preguntas ​ N​ , y con éste definir el arreglo de 
RespuestaCorrecta[N]​ , se procede a capturar la información de las respuestas correctas, 
teniendo en cuenta que es una prueba de escogencia múltiple en donde cada pregunta 
tendrá únicamente 5 opciones, luego la respuesta correcta estará entre 1 y 5. 
 
Para ​ N​
 = 10 
 ​      [0]            [1] [2]   [3]        [4]           [5]             [6]                [7]                 [8]               [9] 

 0  0   0   0   0   0   0  0   0   0  


 
 // Inicializando en cero el puntaje de cada estudiante 
    for (i = 0; i < M; i++) 
        Est_Puntaje[i] = 0; 
 
// Se utiliza un ciclo para solicitar las respuestas correctas 
// Se valida la entrada teniendo en cuenta que los valores están entre 1 y 5 
for (i = 0; i < M; i++) 

cout<<"\nDigite identificacion del estudiante "<<i+1<<" ­> "; 
cin>>Est_Identificacion[i]; 
//Ciclo for interno N preguntas 
for (j = 0; j < N; j++) 

 //Variable auxiliar para poder validar el dato entre 1 y 5 
 cout<<"\nDigite respuestas estudiante "<<Est_Identificacion[i]<<":"; 
 do{ 
cout<<"\nA la pregunta "<<j+1<<" ­> "; 
cin>>Respuesta; 
 }while (Respuesta < 1 or Respuesta > 5); 
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
Taller
 ​
//Respuesta igual a RespuestaCorrecta suma uno al puntaje 
 ​
if (Respuesta == RespuestaCorrecta[j]) 
  Est_Puntaje[i] = Est_Puntaje[i] + 1; 


 
Con los datos de las respuestas correctas, se procede a capturar la información de los 
estudiantes que presentaron la prueba de aptitud informática.  
 
IMPLEMENTACIÓN.  
Teniendo la cantidad de estudiantes ​
M​ y definidos los arreglos: ​
Est_Identificacion[M] y 
Est_Puntaje[M] 
 
Representación gráfica del ciclo anidado, con datos de prueba: 
 
N = 8 M = 6 
 

 
 
Con la anterior información se procede a entregar requerimientos solicitados. 
 
// Se imprime la identificación y el puntaje de cada uno de los M estudiantes  
cout<<"\n\nRESULTADOS DE LA PRUEBA (TODOS LOS ESTUDIANTES)\n"; 
for (i = 0; i < M; i++) 
cout<<"\nCodigo "<<Est_Identificacion[i]<<" Puntaje ­> "<<Est_Puntaje[i]; 
 
 
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
Taller

PRUEBAS. 
Con los datos de prueba entregados en la representación gráfica de los ciclos, se deberá 
obtener el siguiente resultado: 

5. ENTREGABLES 
1. Código fuente (​ )
PruebaInformatica.cpp​
2. Obligatorio el uso de comentarios al código utilizando el símbolo // 

También podría gustarte