Autor: Edison Del Rosario

  • 1Eva_IT2015_T3 Capacitar a voluntarios seleccionados aleatoriamente

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

    Tema 3. (30 puntos) Se registraron voluntarios para colaborar en el evento del Parque Samanes por la visita del Papa a Guayaquil.

    Parque Samanes - Guayaquil

    Para capacitar a los voluntarios,  identificados por un número, se requiere formar grupos equitativos (igual cantidad) para: orientar a las personas en al ingreso y salida, portar letreros y banderas, distribuir agua, prestar atención a discapacitados y quienes pudiesen tener algún problema de salud, entre otras.

    Realice un algoritmo para distribuir a voluntarios en m tipos de capacitación en forma aleatoria, no repetida y equitativa; luego muestre el listado que indica la capacitación que recibirá cada voluntario.

    Ejemplo: para n=8, m=4, maxtipo= 8/4 =2

    voluntario capacita [voluntario]
    1 3
    2 1
    3 4
    4 3
    5 1
    6 2
    7 2
    8 4

    Nota: Un voluntario solo puede asistir a una capacitación. Suponga que n es múltiplo de m.

    Referencia: La república. Quito y Guayaquil ultiman detalles para visita del papa Francisco a Ecuador. 02.07.2015. http://www.larepublica.ec/blog/sociedad/2015/06/30/quito-y-guayaquil-ultiman-detalles-para-visita-del-papa-francisco-a-ecuador/

    Rúbrica: ingreso y validación (5 puntos), sorteo capacitación única (5 puntos), cupos de capacitación (15 puntos), mostrar resultados (5 puntos).

  • 1Eva_IT2015_T2 Impuesto a herencia

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

    Tema 2. (25 puntos) El 5 de junio de 2015, la Asamblea Nacional recibió un proyecto de ley en materia económica con calidad de urgente conocido como “Ley de Herencias”.

    El proyecto reformaría el porcentaje del impuesto sobre las herencias, el cual es progresivo basado en equivalentes al salario básico (SB). Al Año 2015, el salario básico (SB) se estableció en $354,00.

    Para el impuesto, considerando solo el caso por cada heredero directo, dado un valor de herencia y el número de herederos, se calcula el valor equivalente en salarios básicos (SB). Usando la tabla se determina el rango aplicable, para calcular el impuesto se suman: el “impuesto a fracción básica” y la “tarifa” multiplicada por el excedente; el resultado buscado es el valor convertido a dólares.

    Elabore un algoritmo que dado el valor de herencia, el número de herederos y el salario básico en dólares ($), calcule el valor propuesto del impuesto en dólares.

    “Artículo 4. Tarifas para liquidar este impuesto son: a. En caso de los beneficiarios sea legitimarios del causante o donante, según corresponda, se aplicará la siguiente tabla:”

    Tabla expresada en número de Salarios Básicos (SB)
    Rango Aplicable impuesto tarifa
    Fracción Básica Exceso hasta fracción básica fracción excedente
    - 100 - -
    100 200 - 2,50 %
    200 400 2,5 7,50 %
    400 800 17,5 17,50 %
    800 1600 87,5 32,50 %
    1600 en adelante 347,5 47,50 %
    Ejemplo:
    Valor de herencia ($) $ 200.000,00
    Número de herederos: 2
    Salario básico $ 354,00
    Equivale (SB): (200.000,00/2) /354,00= 282,4859
    rango aplicable (SB) 200 a 400
    Fracción Excedente (SB) 282,4859-200= 82,4859
    Impuesto en SB 2,5+82,4859*(7,50%)= 8,6864
    Impuesto por heredero en ($) 8,6864*$354= $3.074,99

    Nota: Se usa solo un escenario para la evaluación algorítmica tomando como referencia de cálculo un literal del artículo.

    Referencias: Oficio No. MINFIN-DM-2015-0333, 05-jun-2015, Quito. www.eluniverso.com. Conozca el proyecto de ley para el impuesto a las herencias en Ecuador, 2015/06/05. http://www.eluniverso.com/sites/default/files/archivos/2015/06/rd_215732correa_215732_304958.pdf

    Rúbrica: ingreso (5 puntos), transformar unidades (5 puntos), determinar parámetros por rangos (10 puntos), resultado (5 puntos)

  • 1Eva_IT2015_T1 algoritmo multiplicar

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

    Tema 1. (25 puntos) Un procedimiento matemático para multiplicar dos números enteros con valores entre 1 y 1000 se describe en el siguiente ejemplo:

    Se desea conocer el producto de dos números: 997 y 991
    Obtenga los resultados de las restas: 1000-997 = 3
    1000-991 = 9
    Sume los resultados de las restas: 3 + 9 = 12
    Reste de 1000 el resultado de la suma anterior: 1000-12 = 988
    Multiplique este resultado por 1000: 988 x 1000 = 988000
    Multiplique los resultados de las restas iniciales: 3 x 9 = 27
    La suma de los dos últimos resultados es el producto deseado: 988000+27 = 988027

    Escriba un algoritmo que verifique que esta regla se cumple para cada producto a x b. Las variables a y b son enteros positivos entre 1 y un valor que puede llegar hasta 1000. Muestre la respuesta mediante un mensaje.

    Rúbrica: ingreso y validación (5 puntos), procedimiento matemático (5 puntos), comprobar que cumple para a (5 puntos), comprobar que cumple para b (5 puntos), Algoritmo estructurado (5 puntos)

  • 2Eva_IIT2015_T4 biciespol, prestamos de bicicletas

    2da Evaluación II Término 2015 – 2016, Febrero 02, 2016 /ICM00794

    Tema 4. (30 puntos). La universidad contará con el servicio de préstamo de bicicletas para el recorrido de la ciclovía del lago en el Campus Prosperina y como un medio alterno de transporte interno.

    Para usar el servicio, los estudiantes registran sus datos en un formulario de préstamo y responsabilidad. Las bicicletas se identifican por un código, el estado: libre (0), o el estudiante (matricula) y su ubicación.

    Realice un programa que mediante el menú mostrado permita gestionar el préstamo de las bicicletas.

    Menú:
    1. Formulario de Préstamos
    2. Registro de bicicletas
    3. Préstamo
    4. Devolución
    5. Inventario de estado
    6. Salir
    formulario
    matricula nombre carrera
    201514522 Maria Logistica
    201522347 Pedro Quimica
    201537890 Ana Mecanica

    Ubicación: 1 tecnologías, 2 ingenierías, 0 prestada

    bicicletas
    codigo estado ubicacion
    22 0 1
    23 201522347 0
    24 0 1
    25 201514522 0
    26 0 2

    Para el préstamo:

    • el estudiante escribe su matrícula y la ubicación del préstamo.
    • Se busca entre las bicicletas disponibles (estado 0)  en la ubicación para asignarla al estudiante y cambiar su estado.
    • Al devolver la bicicleta, se entrega el número de matrícula y
    • se actualiza su ubicación de entrega y estado.
    • El inventario de estado muestra cuántas bicicletas se encuentran prestadas y por ubicación.

    Referencia: Espol tendrá ciclovía para traslado interno. www.eluniverso.com. 05-marzo-2015

    Rúbrica: Menú (5 puntos). Manejo de registros (5 puntos). Gestión de préstamo (10 puntos) y devolución (5 puntos). Inventario (5 puntos).

  • 2Eva_IIT2015_T3 Playaton limpieza de playas

    2da Evaluación II Término 2015 – 2016, Febrero 02, 2016 /ICM00794

    Tema 3. (25 puntos) Para celebrar el Día Internacional de la Limpieza de Playas, el Ministerio del Ambiente (MAE) organizó el “Playatón” para 155 lugares con playas de la Costa y Galápagos, ríos, lagunas, esteros de la Sierra y Amazonía buscando la participación de 25 mil voluntarios.

    En el evento del 2014,  Ecuador se ubicó en el sexto lugar entre 123 países en el mundo con: 16.573 inscritos, recolecta de 114.125 libras de residuos (ranking publicado por Ocean Conservancy).

    Para gestionar el evento, realice un programa que permita:

    a) Registrar los datos de los voluntarios según la tabla mostrada
    b) Calcule cuántos voluntarios se registraron en cada playa y
    c) Determine el total de residuos recolectados en cada playa, usando la función del tema anterior
    d) Muestre el total de playas atendidas y el total recolectado en el evento.

    voluntarios
    cedula nombre playa recolectado(Kg)
    1234 Juan 921(Playas) 5.4(Kg)
    9874 Ana 138(Manta) 6.2(Kg)
    Total playas atendidas: 2
    Total recolectado: 11.6

    Referencia: Playatón, el evento que prevé alcanzar 25 mil voluntarios para limpiar playas, ríos y lagos. 15/09/2015. www.eluniverso.com

    #Playatón: Ecuador limpia los balnearios desde Galápagos hasta ríos y lagos del Oriente. 19 de Septiembre, 2015. www.eluniverso.com

    Rúbrica: Ingreso (5 puntos), manejo de tabla (5 puntos), uso de función totalportipo (5 puntos),  resultados (5 puntos), algoritmo estructurado (5 puntos).

  • 2Eva_IIT2015_T2 funcion totalportipo(tabla)

    2da Evaluación II Término 2015 – 2016, Febrero 02, 2016 /ICM00794

    Tema 2. (25 puntos). Realice una función totalportipo(tabla) para recibir una tabla de tamaño nx2 tal como se muestra en el ejemplo.

    La columna tipo contiene números enteros que pueden ser repetidos y la columna cantidad tiene un número real positivo.

    La función cuenta las veces que aparece cada tipo, y el acumulado de cantidades por cada tipo, entregando la matriz mostrada en el ejemplo.

    Ejemplo:

    tabla
    tipo cantidad
    921 5.4
    1308 6.2
    806 7.1
    1308 4.3
    921 2.1
    921 3.1
    806 2.0

    >>totalportipo(tabla)

    tabulado
    tipo cuenta acumulado
    921 3 10.6
    1308 2 10.5
    806 2 9.1

    Nota: los encabezados de la tabla son referenciales para el ejemplo
    Rúbrica: Definir la función (5 puntos), determinar únicos (5 puntos), contar tipo (5 puntos), acumular cantidades (5 puntos), algoritmo estructurado (5 puntos)

  • s2Eva_IIT2015_T4 biciespol, prestamos de bicicletas

    Ejercicio: 2Eva_IIT2015_T4 biciespol, prestamos de bicicletas

    Algoritmo en Python:

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IIT2015_T4 biciespol, prestamos de bicicletas
    # Tarea: validar matricula de estudiante
    
    opcion = -1 # aun no es escoge una opcion
    while not(opcion==6):
        # Presenta el menú
        print('Menú:')
        print('1. Formulario de Préstamos')
        print('2. Registro de bicicletas')
        print('3. Préstamo')
        print('4. Devolución')
        print('5. Inventario de estado')
        print('6. Salir')
        
        opcion = int(input('cual es su opcion:'))
        
        if opcion==1:
            # Ingresa un estudiante
            mat  = input('matricula: ')
            nom  = input('nombre: ')
            carr = input('carrera: ')
            unestudiante = [mat,nom,carr]
            formulario.append(unestudiante)
    
        if opcion==2:    
            # Bicicletas
            m =  int(input('cuantas bicicletas:'))
            bicicletas =[]
            j = 0
            while not(j>=m):
                cod = input('codigo: ')
                est = 0 # iniciar con cero
                ubi = int(input('ubicacion:'))
                # crea un registro
                unabici = [cod,est,ubi]
                # Añade a la tabla
                bicicletas.append(unabici)
                j = j+1
    
        if opcion==3:
            
            est = input('matricula')
            cod = input('codigo: ')
            ubi = int(input('ubicacion'))
    
            # Tarea: validar matricula de estudiante
    
            # busca la bicicleta
            m = len(bicicletas)
            j = 0
            while not(j>=m):
                if bicicletas[j][0]==cod:
                    donde = j
                j = j + 1
            
            # prestamo
            if (bicicletas[donde][1] == '0' and bicicletas[donde][2]==ubi):
                bicicletas[donde][1] = est
                bicicletas[donde][2] = 0
                
        # Opciones 4 y 5 continuan en el siguiente laboratorio
        
        if opcion==6:
            print('gracias por usar el software...')
            print('@espol.edu.ec')
    
  • s2Eva_IIT2015_T2 funcion totalportipo(tabla)

    Ejercicio: 2Eva_IIT2015_T2 funcion totalportipo(tabla)

    Solución propuesta en Python, continúa junto al tema 3.

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IIT2015_T2 funcion totalportipo(tabla)
    # propuesta de repaso: edelros@espol.edu.ec
    
    import numpy as np
    
    def totalportipo(tabla):
        # Tamaño de tabla con codigoplaya,recolectado
        n,k = tabla.shape  
        
        # verifica banderas repetido cambiando a 1
        repetidos = np.zeros(n,dtype=int)
        i = 0
        while not(i>=(n-1)):
            j = i + 1
            while not(j>=n):
                if (tabla[i,0]==tabla[j,0]):
                    repetidos[j] = 1
                j = j+1
            i = i + 1
        
        # cuenta los que se eliminan
        # para ver los m que son únicos
        eliminar = 0
        fila = 0
        while not(fila>=n):
            eliminar = eliminar + repetidos[fila]
            fila = fila + 1
        m = n-eliminar
    
        # copiar codigos unicos en tabulado columna 0
        tabulado = np.zeros(shape=(m,3), dtype=float)
        fila = 0
        j = 0
        while not(fila>=n):
            if (repetidos[fila]==0):
                tabulado[j,0] = tabla[fila,0]
                j = j + 1
            fila = fila + 1
    
        # Cuenta voluntarios por playa en tabulado columna 1
        # Acumula recolectado por playa en tabulado columna 2
        fila = 0
        while not(fila>=n):
            cual = tabla[fila,0]
            # encuentra el índice en donde
            donde = np.where(tabulado[:,0]==cual) 
            tabulado[donde,1] = tabulado[donde,1] + 1
            tabulado[donde,2] = tabulado[donde,2] + tabla[fila,1]
            fila = fila + 1
    
        # acumula lo recolectado por playa
        return(tabulado)
    

    ejercicios resueltos Python 2Eva_IIT2015_T2 pdf

  • s2Eva_IIT2015_T3 Playaton limpieza de playas

    Ejercicio: 2Eva_IIT2015_T3 Playaton limpieza de playas

    Continuación del tema 2. Propuesta de solución en Python: pyT2_pdf, pyT3_pdf

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IIT2015_T2 funcion totalportipo(tabla)
    # propuesta de repaso: edelros@espol.edu.ec
    
    import numpy as np
    
    def totalportipo(tabla):
        # Tamaño de tabla con codigoplaya,recolectado
        n,k = tabla.shape  
        
        # verifica banderas repetido cambiando a 1
        repetidos = np.zeros(n,dtype=int)
        i = 0
        while not(i>=(n-1)):
            j = i + 1
            while not(j>=n):
                if (tabla[i,0]==tabla[j,0]):
                    repetidos[j] = 1
                j = j+1
            i = i + 1
        
        # cuenta los que se eliminan
        # para ver los m que son únicos
        eliminar = 0
        fila = 0
        while not(fila>=n):
            eliminar = eliminar + repetidos[fila]
            fila = fila + 1
        m = n-eliminar
    
        # copiar codigos unicos en tabulado columna 0
        tabulado = np.zeros(shape=(m,3), dtype=float)
        fila = 0
        j = 0
        while not(fila>=n):
            if (repetidos[fila]==0):
                tabulado[j,0] = tabla[fila,0]
                j = j + 1
            fila = fila + 1
    
        # Cuenta voluntarios por playa en tabulado columna 1
        # Acumula recolectado por playa en tabulado columna 2
        fila = 0
        while not(fila>=n):
            cual = tabla[fila,0]
            # encuentra el índice en donde
            donde = np.where(tabulado[:,0]==cual) 
            tabulado[donde,1] = tabulado[donde,1] + 1
            tabulado[donde,2] = tabulado[donde,2] + tabla[fila,1]
            fila = fila + 1
    
        # acumula lo recolectado por playa
        return(tabulado)
    
    
    # 2Eva_IIT2015_T3 Playaton limpieza de playas
    voluntarios = []
    opcion = 0
    while not(opcion==7):
        print('1. registrar voluntario')
        print('2. registrar Kg recolectada/voluntario')
        print('3. conteo de voluntarios')
        print('4. tabular recolectado')
        print('5. Guardar archivo')
        print('6. Abrir archivo')
        print('7. Salir')
        
        opcion = int(input(' opcion:'))
        
        if (opcion==1):
            print('-- registrar voluntario --')
            ced = int(input('cédula: '))
            nom = input('nombre: ')
            pla = int(input('codigo playa: '))
            rec = 0
            registro = {'cedula':ced,
                        'nombre': nom,
                        'playa':pla,
                        'recolectado':rec}
            voluntarios.append(registro)
            print('gracias por participar')
    
        if (opcion==2):
            print('-- registrar Kg recolectado/voluntario --')
            ced = int(input('cédula: '))
            rec = float(input('recolectado: '))
            
            # buscar voluntario,
            # Podría buscar con index en la lista
            encontre = -1
            n = len(voluntarios)
            fila = 0
            while not(encontre>=0 or fila>=n):
                if (voluntarios[fila]['cedula']==ced):
                    encontre = fila
                fila = fila + 1
            
            if (encontre>=0):
                voluntarios[encontre]['recolectado'] = rec
                print('recolectado:',rec)
            else:
                print('no esta registrado este voluntario')
    
        if (opcion==3):
            print('--- cuenta voluntarios ---')
            n = len(voluntarios)
            # extraer columnas codigoplaya y recoletado
            tabla = np.zeros(shape=(n,2),dtype=float)
            fila = 0
            while not(fila>=n):
              tabla[fila][0] = voluntarios[fila]['playa']
              tabla[fila][1] = voluntarios[fila]['recolectado']
              fila = fila + 1
            resultado = totalportipo(tabla)
    
            print('los voluntarios presentados son:',n)
            print(resultado)
    
        if (opcion==4):
            print('-- tabular recolectado --')
            n = len(voluntarios)
            # extraer vector codigos playas
            tabla = np.zeros(shape=(n,2),dtype=float)
            fila = 0
            while not(fila>=n):
              tabla[fila][0] = voluntarios[fila]['playa']
              tabla[fila][1] = voluntarios[fila]['recolectado']
              fila = fila + 1
            resultado = totalportipo(tabla)
    
            #total recolectado
            m,k = resultado.shape
            total = 0
            i = 0
            while not(i>=m):
                total = total + resultado[i,2]
                i = i + 1
            print('El total recolectado es:',total)
            print('El total por playa es: ')
            print(resultado)
    
        if (opcion==5):
            print('---- guardar el archivo de voluntarios ---')
            
            # prepara el modo escritura 'w' de archivo
            archivo = open('voluntarios.txt','w')
            
            n = len(voluntarios)
            fila = 0
            while not(fila>=n):
    
                # Crea la linea de texto de los datos
                # para un registro, separada por comas
                registro = str(voluntarios[fila]['cedula'])
                registro = registro + ',' + voluntarios[fila]['nombre']
                registro = registro + ',' +str(voluntarios[fila]['playa'])
                registro = registro + ',' +str(voluntarios[fila]['recolectado']) +'\n'
    
                # Escribe en el archivo
                archivo.write(registro)
                fila = fila + 1
    
            archivo.close()     # Cierra el archivo    
            print('archivo guardado...')
    
        if (opcion==6):
            print(' --- Abrir archivo de voluntarios---')
            voluntarios = []
            
            # prepara el modo lectura(read 'r') de archivo
            archivo = open('voluntarios.txt','r')
            linea = archivo.readline()
    
            #Hasta encontrar el final del archivo
            while (linea!=''):
                # Divide los datos por comas
                datos = linea.split(',')  
                ced = int(datos[0])
                nom = datos[1]
                pla = int(datos[2])
                rec = float(datos[3])
                
                # crea el registro diccionario para la lista
                registro = {'cedula':ced,
                            'nombre': nom,
                            'playa':pla,
                            'recolectado':rec}
                
                voluntarios.append(registro)
                # Lee la siguiente linea
                linea=archivo.readline()
                
            archivo.close()  # Cierra el archivo
            
            n = len(voluntarios)
            print(' Se recuperaron '+ str(n) + ' registros de voluntarios')
            
        if (opcion==7):
            print(' gracias por usar el software, @copyritghs')
    

    ejercicios resueltos Python 2eva_iit2015_t3 pdf

  • 2Eva_IIT2015_T1 función lipovocal(frase)

    2da Evaluación II Término 2015 – 2016, Febrero 02, 2016 /ICM00794

    Tema 1. (20 puntos). Un lipograma es un texto que se construye prescindiendo voluntariamente de alguna letra del abecedario.

    Realice una función lipovocal(frase) que reciba una frase, retornando como respuesta la única vocal que falta; o la respuesta de ‘no cumple’ en caso que tenga más de una vocal faltante.

    Ejemplo: 
    >> frase='Con ojillos oscuros, luminosos, ambas tan blancas como dos palomas, cruzando prados y salvando lomas hoy las vi con dos pícaros gomosos.'
    >> lipovocal(frase)
    'e'
    >> frase='murcielago'
    >> lipovocal(frase)
    'no cumple'

    Rúbrica: Definir función (5 puntos), buscar faltante (5 puntos), validar frase (5 puntos), algoritmo estructurado (5 puntos).