1.1 Introducción al curso

Actividades:  [ 1ra Evaluación ] [ 2da Evaluación ]

El curso de Fundamentos de Programación presenta a los estudiantes estrategias para resolver problemas comunes en diversas profesiones por medio del diseño e implementación de soluciones basadas en el uso de un lenguaje de programación. Cubre los principios básicos para que el estudiante pueda leer y escribir programas; haciendo énfasis en el diseño y análisis de algoritmos.” (Syllabus)

Syllabus

Se presentan varias fuentes de material de estudio, como evaluaciones/exámenes  anteriores, propuestas de solución (ver el menú), libros digitales, etc.

Bibliografía

Para el desarrollo del curso, es conveniente disponer de algunos lineamientos generales:

Políticas del curso

Reglamento de Evaluaciones

Material de Revisión autónoma

Sesión01: Estructuras de Control en programación

Actividades:  [ 1ra Evaluación ] [ 2da Evaluación ]

Material de clases

  • Algoritmos. Conceptos y Propiedades
  • Entorno Python. Revisar sección Recursos/descarga, disponer de WinPython para iniciar la clase.

Nota: si en el laboratorio y computador asignado para la clase no dispone de Python, puede usar la versión portable de WinPython descrita en la sección de descargas. No se requiere permisos de administrador para poder usarla, solo debe copiar el directorio de WinPython a un directorio de trabajo. Se recomienda tener una copia descargada en una memoria USB.

Actividades:  [ 1ra Evaluación ] [ 2da Evaluación ]

1Eva_IIT2014_T1 Verificar si a y b son Números amigos

1ra Evaluación II Término 2014-2015. Diciembre 9, 2014 /ICM00794

Tema 1. (20 puntos) Dos números enteros positivos a y b son amigos sí solo sí la suma de los divisores de a es igual al número b, y la suma de los divisores de b es igual al número a.

Ejemplo:
números: a = 220 b = 284
divisores de número: 1, 2, 4, 5, 10, 11, 20,
22, 44, 55 y 110,
1, 2, 4, 71 y 142,
suma de divisores 284 220

Escriba un algoritmo para determinar si dos números enteros a y b son amigos o no.

Rúbrica: ingresar y validar positivos (5 puntos), buscar divisores (10 puntos), acumular divisores (3 puntos) determinar si son amigos (2 puntos).

1Eva_IT2014_T4 Jugadores para escuela de Fútbol

1ra Evaluación I Término 2014-2015. Julio 1, 2014 /ICM00794

Tema 4. (30 puntos) En una escuela de fútbol se inscriben n jugadores identificados con su número en la lista de asistencia y un código que identifica su mejor habilidad en la cancha. Al ingresar la habilidad por jugador, se validan los códigos.

Para entrenamiento se forman dos equipos de 11 jugadores seleccionados de forma aleatoria, cada equipo debe contener:

un portero, cuatro defensas, dos para medio campo y cuatro delanteros.

Escriba un algoritmo para ayudar a este entrenador a elegir aleatoriamente a los jugadores de ambos equipos y muestre los jugadores de cada equipo.
Observe que un jugador no puede pertenecer a más de un equipo.

Suponga que se registran siempre más jugadores por especialidad que lo necesario. Ejemplo n>40

Código Habilidad
1 Portero
2 Defensa
3 Mediocampo
4 delantero
j habilidad(j) equipo(j)
1 2 0
2 2 0
3 3 2
4 1 1
5 4 0
6 4 1

Rúbrica: Ingreso y validación (5 puntos), selección aleatoria (5 puntos), no repetida (10 puntos), por grupos (5 puntos), salida (5 puntos)

1Eva_IT2014_T3 Pirámide Publifast

1ra Evaluación I Término 2014-2015. Julio 1, 2014 /ICM00794

Tema 3. (25 puntos) Nuevamente el juego de la pirámide fue usado como una estafa para muchos ciudadanos, en ésta ocasión usando publicidad en redes sociales. negociopiramide

Para demostrar que éste tipo de negocios es limitado, escriba un algoritmo que simule la situación conforme a la siguiente descripción:

  • Inicialmente hay una persona en la pirámide conocida como el promotor
  • En cada mes, para recibir los beneficios cada persona en la pirámide debe invitar un número fijo de k personas. Suponga que la pirámide crece uniforme cada mes con los invitados.
  • Cada persona al ingresar a la pirámide debe aportar una cuota en dólares.
  • El crecimiento ya no es posible cuando la cantidad de personas en la pirámide resulta ser mayor al número de personas en capacidad de aportar dinero a la pirámide. Ej: los habitantes m de un país.

Al final muestre cuántos meses funcionó la pirámide, cuántas personas formaron parte y el dinero recaudado.

Observación: La pirámide termina cuando ya no quedan suficientes nuevos aportantes. Por lo que lo recaudado es solo hasta ese mes.
Ref: http://www.eluniverso.com/noticias/2014/06/11/nota/3066307/sedujo-forma-facil-duplicar-su-dinero-web

Rúbrica: control de ciclos (5 puntos), control de crecimiento (10 puntos), resultados (10 puntos)

1Eva_IT2014_T1 Cuadrado de Cinco

1ra Evaluación I Término 2014-2015. Julio 1, 2014 /ICM00794

Tema 1. (20 puntos) Se dice que el cuadrado de cualquier número terminado en 5 se forma como el producto de las decenas y (decenas+1), añadiendo a la derecha del resultado el 25. Si el número es menor que 100 se calcula fácilmente con la tabla de multiplicar como se muestra en los ejemplos:

Operación decena decena+1 añadir resultado
252 2 3 6 625
852 8 9 72 7225

252, la decena que es 2, se multiplica por 3 que es la decena+1, resulta 6 que se añade a la derecha 25 y su resultado es 625.


852, se calcularía como 8×9=72, se añade a la derecha 25, el resultado es 7225.


Elabore un algoritmo que valide el proceso para los números terminados en cinco dentro del rango entre 5 y m (ejemplo 1000). Al final muestre si se cumple lo descrito, en caso de ser incorrecto, mostrar el primer número para el que no se cumple.

Rúbrica: Operaciones con los dígitos (10 puntos), Validación rango (10 puntos).

3Eva_IIT2006_T1 Crear usuarios en lista de nombres

3ra Evaluación II Término 2006-2007, Febrero 6, 2007 /ICM00794

Tema 1. (20 Puntos) Los “nombres de usuario” para una compañía se crean a partir de los nombres y el apellido paterno de sus empleados conformado de ocho (8) letras, usando una letra de cada nombre y el resto de su apellido.

a) Realice una función en matlab user(nombre1,nombre2,apellidop) que reciba los nombres y apellido paterno de un empleado y devuelva su “nombre de usuario”.

b) Escriba un programa en Matlab que registre en una lista los nombres de los n empleados de la compañía y muestre el listado de los “nombres de usuario”

Ejemplo:
Nombre1 Nombre2 Apellido Paterno Usuario
Juan Pedro Rodriguez jprodrig

1Eva_IT2014_T2 Verificar EAN con Python

1ra Evaluación I Término 2014-2015. Julio 1, 2014 /ICM00794

Tema 2. (25 puntos) El número EAN-13 (European Article Number) usado comercialmente en Europa en la identificación de productos, está constituido por 13 dígitos y con una estructura dividida en cuatro partes :

  • 3 dígitos para el país,
  • 4 dígitos para la empresa,
  • 5 dígitos para el producto, y
  • un dígito de control.

El dígito de control permite detectar errores de lectura del código, calculado como:

  • Comenzando por la derecha, se multiplican los dígitos del código por 1 si su posición es par y por 3 si es impar,
  • Se suman los valores de los productos obtenidos,
  • Se resta a la decena superior el resultado de la suma, siendo el resultado el dígito de control.
7 7 0 2 0 0 4 0 0 3 5 0
x1 x3 x1 x3 x1 x3 x1 x3 x1 x3 x1 x3
7 21 0 6 0 0 4 0 0 9 5 0
Suma = 52
 decena superior = 60
 verificador calculado 60-52 = 8

Realice un algoritmo que dado un número EAN valide que sea de 13 dígitos, calcule el dígito verificador e informe si es correcto.

Referencia: http://es.wikipedia.org/wiki/European_Article_Number

Rúbrica: Ingreso y validación (5 puntos), cálculos por dígito (10 puntos), decena superior (5 puntos), resultado (5 puntos)

s1Eva_IT2014_T2 Verificar EAN con Python

Ejercicio: 1Eva_IT2014_T2 Verificar EAN

En el aula se requeria: separar los componentes de producto, empresa y pais. Luego encontrar la suma de los digitos con la operación indicada en el enunciado.

La siguiente semana de ser necesario se explica el tema de la decena superior.

 

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IT2014_T2 Verificar EAN

# INGRESO
EAN = int(input('European Article Number,EAN: '))

# PROCEDIMENTO
# separar las partes
verificador = EAN%10
numero = EAN//10

producto = numero%100000
numero =  numero//100000

empresa =  numero%10000
pais =  numero//10000

# calcular verificador
suma = 0
numero = numero = EAN//10
while not(numero<=0):
    digito = numero%10
    numero = numero//10
    suma   = suma + 3*digito
    
    digito = numero%10
    numero = numero//10
    suma   = suma + 1*digito
    
decena    = suma//10
superior  = (decena + 1)*10
calculado = superior - suma

if (verificador == calculado):
    valido = 1
else:
    valido = 0
    
# SALIDA
print('el numero ingresado es válido: ', valido)
print('producto: ', producto)
print('empresa: ', empresa)
print('pais: ', pais)

resultado del algoritmo

European Article Number,EAN: 7702004003508
el numero ingresado es válido:  1
producto:  350
empresa:  2004
pais:  770
>>> 

European Article Number,EAN: 7702004003509
el numero ingresado es válido:  0
producto:  350
empresa:  2004
pais:  770
>>> 

1Eva_IIT2014_T4 Turnos en imprenta de gigantografía

1ra Evaluación II Término 2014-2015. Diciembre 9, 2014 /ICM00794

Tema 4. (30 puntos). Una empresa de gigantografías registra los pedidos de trabajo por cliente como la cantidad de letreros a imprimir y los atiende por orden de llegada. 

Cada operador de la imprenta trabaja en turnos de 4 horas (240 minutos), y le toma 25 minutos imprimir un letrero en la máquina.

Al terminar el turno de trabajo (4 horas), el operador debe informar al siguiente:

a) el número de clientes con pedidos completados,

b) el cliente cuyo pedido se está trabajando.

c) La cantidad de letreros completados del pedido que se está atendiendo.

Realice un algoritmo que permita ingresar en un arreglo la cantidad de pedidos por cliente (pedido [cliente]) y pueda estimar las respuestas del informe para el cambio de turno.

Ejemplo:

cliente 1 2 3 4 5 6 7
pedido [cliente] 3 2 1 2 2 4 1
tiempo [cliente] 75 50 25 50 50 100 25
total tiempo [cliente] 75 125 150 200 250 350 375
turno de operador 1 1 1 1 2 2 2
Al cambio de turno:
 pedidos completados: 4
 Atendiendo a cliente: 5
 Letreros completados del pedido: 1

En el ejemplo, se encuentra que:

  • los pedidos completados por el operador  1 fueron solo 4, pues el 5 todavía se está trabajando,
  • los letreros completados del pedido del cliente 5 son 1. (calculado como el cociente (240-200)/25)).

Rúbrica: Ingreso (5 puntos), conversión a tiempos (5 puntos), literal a) (5 puntos), literal b) (5 puntos), literal c) (10 puntos)

1Eva_IIT2014_T3 Parasailing sin sobrecarga, parejas

1ra Evaluación II Término 2014-2015. Diciembre 9, 2014 /ICM00794

Tema 3. (25 puntos) Parasailing es un tipo de deporte extremo de playa promocionado para turistas que usa un paracaídas para dos personas atado e impulsado por una lancha. parasailing dibujo

Por seguridad, la capacidad del paracaídas máxima es de 350 lb.

Dada la capacidad máxima y la lista de los pesos en libras para n turistas en la cola, realice un algoritmo para determinar las combinaciones posibles de parejas entre las personas en la cola de espera sin sobrecargar el paracaídas.

Ejemplo: capacidad máxima=350; Cola de espera:

i 1 2 3
pesos[i] 120 180 165

Referencia: publicado el 21-feb-2012. https://www.eltelegrafo.com.ec/noticias/deportes/1/el-parasailing-los-hace-sentirse-duenos-del-cielo

Rúbrica: ingreso de datos (5 puntos), seleccionar y comparar parejas (15 puntos), conteo de pareja (5 puntos)