informatica 1 - actividad de seguimiento 2

Anuncio
INFORMATICA 1 - ACTIVIDAD DE SEGUIMIENTO 2
Objetivos




Adquirir las bases necesarias para la resolución de problemas que impliquen el uso de
estructuras repetitivas.
Emplear estructuras MIENTRAS, PARA y CONDICIONAL en la solución de problemas
algorítmicos.
Hacer uso de la prueba de escritorio para verificar el funcionamiento correcto de los
algoritmos implementados.
Reforzar los conceptos teóricos de lógica de programación vistos en clase.
Recomendaciones
Las sesiones presenciales son un abrebocas de lo que se viene y solo permite introducirlos
en el tema. Para realizar este taller se recomienda revisar la documentación presentada
en clase, la cual se detalla a continuación:


Libro lógica de programación de Efraín Oviedo. (Capítulos 5 y 6).
Fundamentos de programación de Luis Joyanes Aguilar. (Capítulo 5).
Así mismo, se recomienda revisar (sobre todo los ejemplos resueltos) las siguientes
páginas web:


http://ayura.udea.edu.co/~jlsanche/index.htm: Mirar los ejemplos de la sección 7.
http://sites.google.com/site/tutoriasdeingenieria/algoritmos: Secciones 17 hasta la
22.
También en las siguientes URLs se encuentran videos de cursos similares dictados a
distancia por la universidad, aquí se colocan los enlaces:

Algoritmos Ude@ - Profesor Roberto Florez.
http://zonaudearroba.udea.edu.co/showcategoria.html?selector=12&categoria=12:
 Instrucción casos: Módulo 11, 12.
 Estructura ciclo: Modulo 13.
 Instrucción MIENTRAS: Módulos 14, 15.
 Ciclos anidados: Módulo 16.
 Instrucción PARA: Módulos 17 y 18.
 Instrucción REPETIR (o HAGA): Módulo 19.
 Informatica 1 - Yarumal - Profesores Diego Serna y Sebastian Villa
http://zonaudearroba.udea.edu.co/showcategoria.html?selector=25&categoria=25:
 Estructuras básicas de un algoritmo: http://zonaudearroba.udea.edu.co/video/307
 Estructura CASO: http://zonaudearroba.udea.edu.co/video/306
En la fotocopiadora de don Alberto (código 105) se encuentran las copias del profesor
Efrain Oviedo.
El curso cuenta con monitores cuyo horario de atención puede ser consultado en:
http://sites.google.com/site/carloshmendozac/informatica1
Prueba de escritorio
1. Dado el siguiente programa:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
algoritmo (ejercicio1)
variables:
entero: m, n, a, i
INICIO
m = 12
b = m%20
a = b-1
PARA i=20,1,-3 HARA
SI(a%3 == 0) ENTONCES
SI(a%2 == 0) ENTONCES
b = b - 1
ESCRIBA(‘x’)
SI_NO
b = b – 2
ESCRIBA(‘y’)
FIN_SI
SI_NO
a = a – 1
ESCRIBA(‘z’)
FIN_SI
m = m + i
FIN_PARA
ESCRIBA(‘Feliz navidad, jo jo jo’)
FIN_INICIO
fin(ejercicio1)
Responda las siguientes preguntas:
a. Realice la prueba de escritorio para las variables: i, a, m, n
b. ¿Cuántas veces se ejecuta el ciclo?
c. ¿Cuál es la salida del programa?
2. Dado el siguiente programa:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
algoritmo (ejercicio2)
variables:
entero: veces, varcontrol
INICIO
ESCRIBA(‘Numero de repeticiones que desea: ’)
LEA(veces)
varcontrol = 1
MIENTRAS(veces <= veces)HAGA
ESCRIBA(‘Que fácil es’)
varcontrol = varcontrol + 1
FIN_MIENTRAS
Responda
las siguientes
preguntas:
ESCRIBA(‘Feliz
navidad,
jo jo jo’)
FIN_INICIO
fin(ejercicio2)
a. Realizar la prueba de escritorio asumiendo que el usuario ingresa por teclado 10
como valor para la variable veces.
b. ¿Cuál es la salida en pantalla del programa?
c. ¿Qué sucede si al ingresar la variable veces se le coloca cero o un número
negativo? Asuma que el valor ingresado por teclado para la variable veces es 10.
d. ¿Qué sucede si varcontrol se inicia en cero? Asuma que el valor ingresado por
teclado para la variable veces es 10.
e. ¿Qué sucede si cambiamos la expresión de la línea 8 por MIENTRAS
(varcontrol<veces) HAGA? Asuma que el valor ingresado por teclado para la
variable veces es 10.
f. ¿Qué sucede si cambiamos la expresión de la línea 8 por MIENTRAS
(varcontrol==veces)? Asuma que el valor ingresado por teclado para la variable
veces es 10.
g. ¿Qué sucede si cambiamos la expresión de la línea 8 por MIENTRAS
(varcontrol>=veces)? Asuma que el valor ingresado por teclado para la variable
veces es 10.
h. ¿Qué sucede si cambiamos la instrucción 10 por varcontrol = varcontrol - 1?
Asuma que el valor ingresado por teclado para la variable veces es 10.
i. ¿Qué sucede si cambiamos la instrucción 10 por varcontrol = varcontrol + 2?
Asuma que el valor ingresado por teclado para la variable veces es 10.
j. ¿Qué sucede si le quitamos movemos la instrucción 10 y la colocamos al mismo
nivel de la del MIENTRAS después de este?, ¿Cuál sería la salida del programa?
3. Dadas la siguiente porciones de código realizar la prueba de escritorio para cada caso,
llenar una tabla colocando los valores finales de las variables:
a. Código 1:
entera:i,j,k=10
...
j = k*4
i = 11
MIENTRAS (i < j) HAGA
i = i + 4
j = j – i*9
FIN_MIENTRAS
b. Código 2:
entera:i,j,k=10
...
j = k*4
i = 11
MIENTRAS (i < j) HAGA
i = i + 4
j = j – i*9
FIN_MIENTRAS
Algoritmos
Cada uno de los siguientes algoritmos debe ser codificado a mano tal con el
pseudocódigo visto en clase. Así mismo, después de codificar el algoritmo se debe
realizar una prueba de escritorio en la cual se verifique el correcto funcionamiento del
programa.
La codificación en PseInt es opcional y le puede ayudar a verificar el correcto
funcionamiento del programa codificado. Si la realiza, añadir un pantallazo que
muestre el programa en acción.
Problemas con ciclos
1. Construir un sistema que sirva de control para un camión de carga, la idea es
preguntar cuántos elementos va a cargar, luego preguntar el peso en gramos de
cada elemento a subir. El sistema debe identificar si el peso total a subir es mayor
a 10 toneladas, que es la capacidad máxima del vehículo, en cuyo caso, notificar
que no se debe ingresar la carga, mostrando en cuánto se pasa con respecto al
peso máximo permitido, de lo contrario, decir cuántos kilos más soporta el
vehículo.
2. Un supermercado necesita un pequeño sistema que permita a los cajeros llevar la
suma de los descuentos que se hacen al pasar la tarjeta de clientes especiales. El
sistema funciona para n compras y en cada una de ellas después de darle el precio
de la compra, le pregunta al usuario si tiene la tarjeta de cliente, en cuyo caso se
necesita saber cuánto lleva la persona con la tarjeta así: sí la persona lleva con la
tarjeta hasta un año, el descuento es del 2.2%, más de un año y hasta dos del 4.3%
y más de dos años 6.5%. También se desea saber cuántos usuarios pasaron la
tarjeta.
3. Dado el día, mes y año de nacimiento de una persona, calcular cuántos días ha
vivido hasta una fecha dada en día, mes y año. Tener presente los años bisiestos.
4. Realizar un programa que permita a un usuario, calcular la suma de los números
impares comprendidos entre N y M. N debe ser menor que M en caso contrario
intercambiarlos.
5. Construir un programa que le permita a un usuario calcular la edad promedio de
los invitados a una fiesta. Dado que no se sabe cuántos son los invitados, construir
un algoritmo que aplicando el concepto de continuar mientras el usuario lo desee
calcule el número de invitados que asistieron.
6. Se leerán por el teclado un grupo de números enteros, el sistema deberá contar
cuántos fueron los números leídos en total. La regla para que el sistema siga
leyendo números es que cada nuevo número ingresado sea mayor al anterior.
Cuando no se cumpla esta condición, terminar y mostrar la información generada.
7. Por definición un número primo es aquel que tiene dos divisores exactos 1 y el
mismo. Construir un programa que determine con un mensaje si un número
ingresado es primo o no lo es.
8. Hacer un programa que muestre al usuario el número mayor de un conjunto de
datos positivos ingresados por teclado. El número de datos es desconocido.
9. Un caminante observa la posición en la que se encuentra (X y Y mediante un GPS) a
cada trecho. ¿Cuánto caminó en total y cuál fue el trecho más largo ?
10. Hacer un algoritmo que muestre la siguiente serie. El programa debe solicitar al
usuario el número de términos que desea ver:
0, 1, 3, 6, 10, 15,...
11. Hacer un algoritmo que muestre la siguiente serie. El programa debe solicitar al
usuario el número de términos que desea ver:
10, 11, 20, 21, 30, 31, 40, 41, 50, 51, 60,...
12. A todos nos ha tocado aprendernos las tablas de multiplicar, estas son la base de
muchas operaciones importantes como la división, la potenciación y la radicación.
Construir un programa en el cual el usuario ingrese un entero y el sistema le
genere la tabla de multiplicar de dicho número (hasta 10). El programa debe
permitir el procedimiento cuantas veces lo desee el usuario:
El programa debe mostrar una salida como la siguiente:
******************** PROGRAMA DE TABLAS DE MULTIPLICAR
********************
Digite el número positivo(o un número negativo para terminar):
>> 2
============
TABLA DEL 2:
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
2 * 10 = 20
============
Digite el número positivo(o un número negativo para terminar):
>> 9
TABLA DEL 9:
9 * 1 = 9
9 * 2 = 18
9 * 3 = 27
9 * 4 = 36
9 * 5 = 45
9 * 6 = 54
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81
9 * 10 = 90
Digite el número positivo(o un número negativo para terminar):
>> -1
============
Como dijo un viejo amigo suerte es que le digo.
13. Una empresa extranjera de aviación fumiga cosechas contra una variedad de
plagas. Los valores cobrados a los graneros dependen de lo que estos desean
fumigar y de cuantas hectáreas se fumigan, de acuerdo a la siguiente distribución:
 Tipo 1: Fumigación contra malas hierbas: U$10 por hectárea.
 Tipo 2: Fumigación contra langostas: U$15 por hectárea.
 Tipo 3: Fumigación contra gusanos: U$20 por hectárea.
 Tipo 4: Fumigación contra todo lo anterior: U$30 por hectárea.
Si el área a fumigar es mayor que 1000 hectáreas, el granero goza de un 5% de
descuento. Además, cualquier granjero cuya cuenta sobrepase los 3000 dólares se
le descuenta un 10% sobre la cantidad que exceda dicho precio. Si se aplican
ambos conceptos, el correspondiente a la superficie se considera primero. Por
cada pedido se tiene la siguiente información: Nombre del granjero, tipo de
fumigación solicitada (1, 2, 3, 4) y el número de hectáreas a fumigar. Por cada
solicitud se debe nombre del granjero y valor a pagar.
Nota: Tenga en cuenta que no se sabe el número de solicitudes por lo que se debe
solucionar el problema en forma cualitativa.
14. Una gasolinera presta 4 clases de servicios. Por cada servicio que preste se tienen
los siguientes datos: Clase de servicio prestado (valores del 1 al 4), jornada en la
que se prestó el servicio (M: Mañana, T: Tarde) y valor del servicio. Al finalizar el
día se requiere determinar el valor producido por cada clase de servicio, el número
de veces que se prestó cada servicio, el servicio que más veces se prestó y si este
se prestó más en la mañana o en la tarde.
15. Elaborar un algoritmo que haga el siguiente censo para una empresa de transporte
mostrando la siguiente información:
 Número de vehículos cuyo modelo sea anterior a 1995.
 Número de vehículos cuyo modelo sea de 1995 o posterior y cuya capacidad
sea menor de 35 pasajeros.
 Numero de buses cuyo modelo sea posterior a 1995 con capacidad mayor de
35 pasajeros.
 Numero de busetas con capacidad menor de 35 pasajeros.
 El total de vehículos de la empresa.
Por cada vehículo la empresa tiene la siguiente información:
 Tipo de vehículo (1: Buseta; 2: Bus).
 Modelo del vehículo.
 Capacidad del vehículo.
16. Una empresa tiene un numero variable de empleados y de cada uno de ellos posee
la siguiente información:
 Código.
 Nombres.
 Número de hijos.
 Salario por hora.
 Número de horas trabajadas al mes.
La retención por cada empleado se determina así:
 Para salarios menores de $300000: Si el número de hijos es mayor de 6 no hay
retención; si el número de hijos es menor o igual a 6, se le retiene un
porcentaje igual a 6 menos el número de hijos dividido por 2.
 Para salarios mayores o iguales a $300000: Si el número de hijos es menor de
3, se le retiene un 3%; si el número de hijos es mayor o igual a 3 se le retiene
un porcentaje igual a 10 dividido por el número de hijos.
 El subsidio por cada hijo es de $1200.
Elaborar un algoritmo que muestre: Código, nombres, devengado, retención,
subsidio y total a pagar.
17. Se desea obtener el promedio de N grupos que están en un mismo año escolar,
sabiendo que cada grupo puede tener M alumnos, cada alumno puede cursar K
materias y en todas las asignaturas se promedian 3 calificaciones. Hacer un
algoritmo que calcule el promedio de cada alumno, el promedio de cada grupo y
el promedio de los grupos.
18. A lo largo del día un cajero procesa a las personas que llegan a efectuar
movimientos bancarios. Estos movimientos son esencialmente consignaciones y
retiros. Determinar la cantidad total de dinero obtenido por concepto de
consignaciones y retiros en todo el día, lo mismo que un balance que indique si
hubo más retiros que consignaciones y la diferencia absoluta.
19. En la elección del candidato estudiantil se presentaron 5 candidatos numerados
consecutivamente del 1 al 5. De N estudiantes en la institución, cada elector
depositó su voto con el número de su candidato favorito. Al final del escrutinio se
desea saber cuántos votos obtuvo cada candidato y el porcentaje de votos de cada
participante.
20. Dados N valores, diseñe un algoritmo que haga el siguiente proceso:
 Si el valor es menor que cero calcular su cubo.
 Si el valor esta entre 0 y 100 calcular su cuadrado.
 Si el valor esta entre 101 y 1000 calcular su raíz cuadrada.
Referencias
http://sites.google.com/site/tutoriasdeingenieria/algoritmos-nuevo-enfoque
http://sites.google.com/site/tutoriasdeingenieria/algoritmos/solucionandoalgoritmos-propuestos-y-ejercicios-de-algoritmos-basicos
http://ayura.udea.edu.co/~jlsanche/index.htm
http://sites.google.com/site/tutoriasdeingenieria/algoritmos
https://sites.google.com/site/lexicomobile/ejercicios-propuestos
http://ocw.univalle.edu.co/ocw/ingenieria-de-sistemas-telematica-y-afines/fundamentos-deanalisis-y-diseno-de-algoritmos/Course_listing
http://www.virtual.unal.edu.co/cursos/sedes/manizales/4060024/html/contenido.html
http://www.carlospes.com/curso_de_algoritmos/
http://www.algoritmia.org
Descargar