Este documento presenta tres temas sobre algoritmos y programación en MATLAB. El primer tema propone resolver un problema sobre el entrenamiento de un atleta usando vectores. El segundo tema trata sobre comprimir datos almacenando números repetidos y sus frecuencias. El tercer tema describe cómo descomprimir los datos restaurando el arreglo original repitiendo los números las veces indicadas.
Derive es uno de los llamados "Programas de Cálculo Simbólico", que podemos definir como programas para ordenadores personales (PC) que sirven para trabajar con matemáticas usando las notaciones propias (simbólicas) de esta ciencia.
Derive es uno de los llamados "Programas de Cálculo Simbólico", que podemos definir como programas para ordenadores personales (PC) que sirven para trabajar con matemáticas usando las notaciones propias (simbólicas) de esta ciencia.
Este curso de Fundamentos de Python con Orientación a Objetos y Basado en Problemas, lo he compartido con mis estudiantes de programación orientada a objetos. El orden de los temas y el nivel de complejidad me ha dado muy buenos resultados. El código tiene algunos comentarios, pero en realidad esta pensado para el apoyo de clase presencial en la que los estudiantes consultan los conceptos con los que ayudan a la solución del problema.
Estos conceptos se comparten y analizan y aclaran en el grupo y permiten mejorar el código. Y con el código se comprueban los conceptos e invita a profundizar en otros conceptos.
Un estudiante debe por lo menos consultar:
Paquete, Clase, Atributo, Método, Parámetros, Arreglos, Archivos...
El archivo aún esta en versión borrador, pero tiene utilidad
Similar a Examen primera evaluacion_ii_2009_solucion (20)
Fundamentos de Python con Orientación a Objetos y Basado en Problemas
Examen primera evaluacion_ii_2009_solucion
1. INSTITUTO DE CIENCIAS MATEMÁTICAS
ICM00794 - FUNDAMENTOS DE COMPUTACIÓN
1ra Evaluación II Término 2009-2010
Diciembre 1, 2009
Matrícula: _________Nombre:______________________________________________________Paralelo:___
Tema 1 (20 puntos). Para las Olimpiadas de Londres 2011 un atleta se prepara para competir en la maratón de
10 km entrenando en una pista circular de 1 km (perímetro). En el entrenamiento, se registra el tiempo en
segundos cada vez que pasa por la marca de inicio de pista (ej: 45,354 segundos). Escriba un algoritmo que
solicite al usuario y almacene el vector de tiempo en el que atleta pasó por la marca de inicio de pista en cada
vuelta, luego determine y muestre las respuestas a las siguientes preguntas:
a) ¿Cuál fue la vuelta que se realizó en menor tiempo?
b) ¿Cuánto tiempo le tomo al atleta completar los 10 km?
c) ¿Cuánto es el tiempo promedio por vuelta?
Rubrica: Manejo de vectores (5 puntos), vuelta menor tiempo (5 puntos), tiempo total (5 puntos), tiempo promedio por vuelta (5 puntos)
Una solución usando funciones de MATLAB
t=input('Ingrese vector con los tiempos ');
n=length(t);
[x,p]=min(t); % valor y posición del menor tiempo ingresado
s=sum(t); % suma de todos los tiempos
r=mean(t); % tiempo promedio
disp([x,p,s,r]);
Otra solución usando instrucciones de MATLAB
t=input('Ingrese vector con los tiempos ');
n=length(t);
x=t(1);
p=1;
for i=2:n
if t(i)<x
x=t(i);
p=i;
end
end
s=0;
for i=1:n
s=s+t(i);
end
r=s/n;
disp([x,p,s,r]);
2. INSTITUTO DE CIENCIAS MATEMÁTICAS
ICM00794 - FUNDAMENTOS DE COMPUTACIÓN
1ra Evaluación II Término 2009-2010
Diciembre 1, 2009
Tema 2 (30 puntos). Al comprimir datos el resultado
tiene menor tamaño que el original. Un método simple
consiste en contar las repeticiones de datos para
después almacenar solo el dato junto al número de
veces que se repite.
Realice un algoritmo para comprimir un arreglo de
números, con tamaño n y presente el resultado como
en el ejemplo.
Ejemplo:
Se convierte en:
j 1 2 3
veces(j) 3 4 3
datoc(j) 2 5 3
Rúbrica: conteo de números repetidos (10 puntos) arreglo de veces y datos (15 puntos), muestra ordenada de datos (5 puntos)
datos=input('Ingrese vector con los datos ');
n=length(datos);
datoc=unique(datos); % Obtención del vector con datos diferentes
m=length(datoc);
veces=[ ]; % Vector de cantidad de repeticiones
for i=1:m
c=0; % Conteo de repeticiones
for j=1:n
if datoc(i)==datos(j)
c=c+1;
end
end
veces=[veces, c];
end
disp(veces);
disp(datoc);
i 1 2 3 4 5 6 7 8 9 10
datos(i) 2 2 2 5 5 5 5 3 3 3
3. INSTITUTO DE CIENCIAS MATEMÁTICAS
ICM00794 - FUNDAMENTOS DE COMPUTACIÓN
1ra Evaluación II Término 2009-2010
Diciembre 1, 2009
Tema 3 (20 puntos). Al descomprimir datos (tema
anterior), se restaura el arreglo original. El método
para descomprimir consiste en repetir el número de
veces indicada cada datoc en el arreglo de salida.
Realice un algoritmo para descomprimir un arreglo de
con tamaño n y presente el resultado como en el
ejemplo.
Ejemplo:
Se convierte en
Rúbrica: Ingreso de datos comprimidos (5 puntos), repetir datos en el arreglo salida (10 puntos), muestra ordenada de datos (5 puntos)
veces=input('Vector de repeticiones ');
datoc=input('Vector compactado ');
n=length(datoc);
datos=[ ]; % Vector descomprimido
for i=1:n
for j=1:veces(i) % Agregar cada dato las veces repetido
datos=[datos, datoc(i)];
end
end
disp(datos);
j 1 2 3
veces(j) 3 4 3
datoc(j) 2 5 3
i 1 2 3 4 5 6 7 8 9 10
datos(i) 2 2 2 5 5 5 5 3 3 3
4. INSTITUTO DE CIENCIAS MATEMÁTICAS
ICM00794 - FUNDAMENTOS DE COMPUTACIÓN
1ra Evaluación II Término 2009-2010
Diciembre 1, 2009
Tema 4 (30 puntos). El juego “Quien quiere ser Millonario” pone a prueba el conocimiento de una persona por
medio de n preguntas consecutivas con 4 opciones de respuesta. El jugador con cada respuesta Correcta se le
permite participar en la siguiente pregunta y aumentar el premio en dólares hasta completar todas las preguntas.
El juego finaliza cuando el jugador no desea participar en la siguiente pregunta manteniendo el premio logrado o
da una respuesta incorrecta perdiendo todo.
Pregunta 1 2 3 4 5 6 7 8 9 10
Premio 200 500 800 1.000 1.500 2.000 3.000 5.000 15.000 20.000
Correcta 2 3 1 1 4 3 4 4 3 1
Escriba un algoritmo que para control de “Quien quiere ser Millonario” para jugar con n preguntas que:
a) Solicite en un vector Pr(p) los premios en dólares, y en un vector C(p) establezca aleatoriamente la
respuesta correcta a cada pregunta p.(10 puntos)
b) Controle la participación del concursante: consultando si continúa a la siguiente pregunta o renuncia, si
continúa se le pregunta una respuesta; se verifica si es la correcta para pasar siguiente pregunta pero si
es incorrecta termina el juego. (15 puntos)
c) Presente la cantidad de dólares logrados en su participación. (5 puntos)
pr=input('Vector con premios ');
n=length(pr);
c=fix(rand(1,4)*4+1); % Vector con las respuestas correctas
x=1; % Señal para continuar jugando
i=1; % Conteo de preguntas
s=0; % Acumulado de premios
while x==1 & i<=n
disp('1) Continua'); % Interacción
disp('2) Renuncia');
x=input('Elija una opción ');
if x==1
disp('Pregunta'); disp(i);
r=input('Indique su respuesta ');
if r==c(i)
s=s+pr(i); % Si la respuesta es correcta se suma premio
i=i+1; % Siguiente pregunta
else
x=2; % Salida si la respuesta no es correcta
end
end
end
disp(s);