Autor: Edison Del Rosario

  • 2Eva_IT2014_T1 Palabras con eco

    2da Evaluación I Término 2014 – 2015, Septiembre 02, 2014 /ICM00794

    Tema 1 (25 puntos) Las “palabras con eco” son parejas de palabras en las que una de estas se forma al menos con 3 letras finales de la otra.
    Ejemplos: Tejido nido, inteligente gente, olorosa osa.

    Realice un programa que solicite una frase y verifique que las últimas dos palabras son “palabras con eco”.

    Frase:
    ‘huelan tus versos a olorosa rosa’
    ‘mal que a muchos ha tejido nido’
    ‘el saber no ocupa lugar’
    Respuesta:
    “tiene eco”
    “tiene eco”
    “NO tiene eco”

    Rúbrica: Ubicar las últimas dos palabras de la frase (10 puntos), comprobar que son “palabras con eco” (10 puntos). Algoritmo estructurado (5 puntos)

  • s2Eva_IT2014_T1 Palabras con eco

    Ejercicio: 2Eva_IT2014_T1 Palabras con eco

    Propuesta de solución en Python:

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IT2014_T1 Palabras con eco
    # TAREA: solo compara la ultima letra
    #        completar para al menos tres letras
    
    # INGRESO
    frase = input('frase: ')
    
    # PROCEDIMIENTO
    eco = 1
    n = len(frase)
    
    # ultima letra de la ultima palabra
    a = frase[n-1]
    
    # ultima letra de la penultima palabra
    # Buscar letra en la otra palabra
    b = ''
    i = n-1
    while (i>0):
        if (frase[i]==' '):
            b = frase[i-1]
        i = i - 1
    
    # letras eco
    if not(a==b):
        eco = 0
    # Completar para al menos las tres ultimas letras
    
    # SALIDA
    print(eco)
    

    resultado del algoritmo

    >>> 
    frase: coso oloroso
    1
    >>> 
    frase: casa erwq
    0
  • s3Eva_IT2015_T4 Bomberos para incendios forestales

    Ejercicios: 3Eva_IT2015_T4 Bomberos para incendios forestales

    Propuesta de solución en Python:

    Algoritmo en Python

    Tarea: Desarrollar la opción 3

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IT2015_T4 Bomberos para incendios forestales
    import numpy as np
    
    def grupobombero(registrados, m, local):
        n = len(registrados)
        filas = n//m
        if (n%m>0):
            filas = filas+1
        tabla = np.zeros(shape=(filas,m),dtype = int)
        # Solo bomberos de provincia local
        f = 0
        c = 0
        i = 0
        while not(i>=n):
            cual = registrados[i,1]
            quien = registrados[i,0]
            if (cual == local):
                tabla[f,c] = quien
                c = c+1
                if (c>=m):
                    c = 0
                    f = f + 1
            i = i + 1
        # los demas bomberos
        i = 0
        while not(i>=n):
            cual = registrados[i,1]
            quien = registrados[i,0]
            if not(cual == local):
                tabla[f,c] = quien
                c = c + 1
                if (c>=m):
                    c = 0
                    f = f + 1
            i = i + 1
        tabla = np.array(tabla)
        return(tabla)
    
    # 3ra Evaluación I Término 2015
    # Tema 4. Bomberos para incendios forestales
    presentados = []
    tabla  = np.zeros(shape=(1,2),dtype=int)
    opcion = -1
    i = 1
    while not(opcion==6):
        print('1. Registrar bombero')
        print('2. Asignar grupos')
        print('3. Mostrar nombres de un grupo')
        print('4. Guardar datos')
        print('5. Leer datos')
        print('6. Salir')
        opcion = int(input(' opcion: '))
    
        if (opcion ==1):
            i = len(presentados) + 1
            print('voluntario: ',i)
            
            ced  = input('cedula: ')
            nom  = input('nombre: ')
            nbom = int(input('numero bombero: '))
            prv  = int(input('provincia: '))
            while not(prv>=1 and prv<=24):
                prv = int(input('provincia [1,24]: '))
                
            unbombero = {'cedula':ced,
                         'nombre': nom,
                         'nbombero':nbom,
                         'provincia':prv}
            presentados.append(unbombero)
    
        if (opcion==2):
            print('asigna grupos.....')
            m = int(input('cuantos grupos/incendios: '))
            local = int(input('ayudar a provincia: '))
            n = len(presentados)
            registrados =[]
            i = 0
            while not(i>=n):
                nbom = presentados[i]['nbombero']
                prv = presentados[i]['provincia']
                registrados.append([nbom,prv])
                i = i + 1
            tabla = grupobombero(registrados, m, local)
            print(tabla)
            
        if (opcion==3):
            print('....3. Mostrar nombres de un grupo')
            # Tarea por desarrollar
                
        if (opcion==4):
            narchivo = 'bomberos.txt'
            archivo = open(narchivo,'w')
            n = len(presentados)
            j =0
            while not(j>=n):
                ced = presentados[j]['cedula']
                nom = presentados[j]['nombre']
                nbom = presentados[j]['nbombero']
                prv = presentados[j]['provincia']
                linea = ced + ',' +nom + ',' + str(nbom) + ',' +str(prv) +'\n'
                archivo.write(linea)
                j = j+1
            archivo.close()
            print('.... registros guardados: ', n)
            
        if (opcion == 5):
            presentados = []
            narchivo = 'bomberos.txt'
            
            archivo = open(narchivo,'r')
            linea = archivo.readline()
            while not(linea==''):
                linea  = linea.strip('\n')
                partes = linea.split(',')
                ced  = partes[0]
                nom  = partes[1]
                nbom = int(partes[2])
                prv  = int(partes[3])
                
                unbombero = {'cedula':ced,
                             'nombre': nom,
                             'nbombero':nbom,
                             'provincia':prv}
                presentados.append(unbombero)
                linea = archivo.readline()
    
            n = len(presentados)
            print('.... registros leidos: ', n)
            archivo.close()
    
        if (opcion==6):
            print(' Saliendo del programa ....')
            print(' ccpg1001 Fundamentos de computación .....')
    
  • 3Eva_IIT2014_T4 Reporte de aprobados / veces

    3ra Evaluación II Término 2014-2015, Marzo 10, 2015 /ICM00794

    Tema 4. (40 puntos) Una vez finalizado el período académico, se requiere administrar los datos de los estudiantes y sus calificaciones en una materia para generar los reportes de desempeño.

    Escriba un programa que realice las operaciones numeradas usando el menú descrito a continuación

    1. Registrar datos de estudiante. Registra el número de matrícula, el nombre, y el número de veces que se registra en la materia [1 a 3] de un solo paralelo. La nota inicial del estudiante es cero.
    2. Registrar calificaciones de estudiantes. Permite ingresar los valores de las calificaciones finales para todos los estudiantes con valores enteros entre 0 y 100
    3. Rectificar una calificación. Dado un número de matrícula, mostrar el nombre del estudiante y solicitar la nueva calificación.
    4. Reporte de resultados. Cuenta y muestra el reporte de estudiantes aprobados (calificación ≥ 60) y reprobados, clasificados por el número de veces que se ha registrado en la materia.
    5. Promedios. Promedio total de calificaciones de la materia, y los promedios por el número de veces que se ha registrado.
    6. Salir
    estudiante:
    matricula nombre veces calificación
    1234 Juan 1 87
    4312 Maria 2 85
    4567 Pedro 1 47
    ... ... ... ...
    Resultados:
    Veces 1 Veces 2 Veces 3 Total
    Reprobado
    Aprobado
    Total

    Rúbrica: Menú (5 puntos), manejo de registros (5 puntos), validar calificaciones (5 puntos), rectificar (10 puntos), conteo de resultados (5 puntos), promedios (5 puntos), algoritmo estructurado (5 puntos)

  • 3Eva_IIT2014_T3 Juego de palabras encadenadas

    3ra Evaluación II Término 2014-2015, Marzo 10, 2015 /ICM00794

    Tema 3 (15 puntos). El Juego de Palabras encadenadas entre dos jugadores consiste en tomar turnos para escribir una palabra que comience con la última sílaba exacta.

    >>> Jugador 1
    palabra: casa
    Jugador 2 :
    palabra: saco
    Jugador 1
    palabra: color
    Jugador 2 :
    palabra: oro
    El ganador de este juego es 1

    Nota: Puede hacer uso de la función del tema anterior

    Rúbrica: Control de turnos (5 puntos), uso de función (5 puntos), confirmar encadenada (5 puntos)

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

  • 3Eva_IIT2014_T2 última sílaba

    3ra Evaluación II Término 2014-2015, Marzo 10, 2015 /ICM00794

    Tema 2 (20 puntos) Realice una función ultimasilaba(palabra) que al recibir una palabra retorne los dos o tres últimos caracteres.
    Si la última letra es una vocal, la respuesta serán las dos últimas letras, si es consonante la respuesta contiene las tres últimas letras.

    >>> ultimasilaba('casa')
    'sa'
    >>> ultimasilaba('color')
    'lor'
    >>> ultimasilaba('examen')
    'men'

    Referencia: http://www.wikilengua.org/index.php/S%C3%ADlaba

    Rúbrica: definir función (5 puntos), determinar vocal o consonante (8 puntos), repuesta condicionada (7 puntos).

  • 3Eva_IIT2014_T1 Ubicar estudiantes en aula

    3ra Evaluación II Término 2014-2015, Marzo 10, 2015 /ICM00794

    Tema 1. (25 puntos). Se dispone de una lista con los números de matrícula para k estudiantes que darán un examen. El salón donde se desarrollará el examen tiene sillas distribuidas de forma ordenada en n filas y m columnas. aula de clases dando examen

    Realice un programa que permita ingresar en un vector los números de matrícula, luego usando una matriz, asigne las sillas de forma aleatoria para cada estudiante.

    El resultado se debe mostrar de dos formas:

    a) una matriz que contiene en las casillas los números de matrícula.
    b) un listado con números de matrícula, y la posición de fila y columna de la silla asignada al estudiante.

    Considere que:

    • k siempre es menor que la capacidad de sillas en el aula (nxm),
    • Una silla sin estudiante asignado, contiene valor 0.
    • Las ubicaciones de los estudiantes son únicas.
    >>> cantidad de estudiantes: 50
    filas en el aula: 5
    columnas en el aula: 4
    **Hay más estudiantes que las sillas en el aula
    cantidad de estudiantes: 5
    filas en el aula: 5
    columnas en el aula: 4
    matricula[1]:123
    matricula[2]:234
    matricula[3]:345
    matricula[4]:456
    matricula[5]:567
    
    Distribución del aula
    [[ 0  567 0   0  ]
     [ 0  0   0   345]
     [ 0  0   123 0  ]
     [ 0  0   0   0  ]
     [ 0  0   234 456]]
    Listado de sillas
    matricula, fila, columna
    123 3 3
    234 5 3
    345 2 4
    456 5 4
    567 1 2
    

    Rúbrica: Ingresar y validar (5 puntos), literal a (10 puntos), literal b (5 puntos). Algoritmo estructurado. (5 puntos)

  • 3Eva_IT2014_T4 Función siembra

    3ra Evaluación I Término 2014-2015, Septiembre 16, 2014 /ICM00794

    Tema 4. (25 puntos) Realice una función siembra(tablero, fila, columna) que en un tablero de 2x8, siguiendo el sentido de las manecillas del reloj, distribuye la cantidad de fichas en la casilla indicada por fila y columna, equitativamente una a una entre las casillas contiguas.

    Observe que dependiendo de la fila, la siguiente casilla es o a la izquierda o a la derecha de donde estaba.

    Al redistribuir el valor:

    • Se empieza a partir de la siguiente casilla seleccionada.
    • Si la siguiente casilla está fuera del tablero, se cambia de fila, invierte el sentido entre izquierda o derecha, y se corrige regresando al tablero en el mismo extremo.
    • Se incrementa el valor de la casilla

    Repitiendo el proceso hasta que no queden fichas.

    >>tablero
    0 4 4 4 4 4 4 0
    0 4 4 4 4 4 4 0
    >>siembra(tablero,1,5)
    0 4 4 4 0 5 5 1
    0 4 4 4 4 4 4 1
    >>siembra(tablero,2,2)
    1 5 5 4 4 4 4 0
    1 0 4 4 4 4 4 0

    Rúbrica: definir función (5 puntos), asignar sentido (5 puntos), añadir valor a casillas (5 puntos), control del valores, tamaños, validar extremos (10 puntos)

  • 3Eva_IT2014_T3 Juego Poli-Mancala

    3ra Evaluación I Término 2014-2015, Septiembre 16, 2014 /ICM00794

    Tema 3. (25 puntos). Poli-mancala es un juego de tablero con 2x8 casillas, 48 fichas y un movimiento denominado “siembra”.

    • Al inicio, se ubican 4 fichas en cada casilla excepto en los extremos izquierdo y derecho del tablero.
    • Se juega por turnos alternados para realizar un movimiento de siembra.
    • Suponga que existe la función siembra(tablero, fila, columna) que devuelve el tablero modificado.
    • La siembra consiste en tomar todas las fichas de una casilla de la fila del jugador, y depositar una a una en las casillas contiguas siguiendo el sentido de las manecillas del reloj.
    • Las casillas de cada jugador se encuentran diferenciadas por color en el tablero mostrado.
    • Cada jugador puede realizar jugadas solo sobre sus casillas excepto la de su extremo (entre columnas 2 y 7).
    • El jugador que acumule más de la mitad de fichas en las casillas de su extremo (Casa) gana el juego.

    Realice un programa para dos jugadores del juego descrito de Poli-mancala.

    Tablero inicial:
    Jugador1 [0 4 4 4 4 4 4 0] Jugador2
       0     [0 4 4 4 4 4 4 0]    0
    
    Jugador 1. ¿Casilla siembra?: 5
    Jugador1 [0 4 4 4 0 5 5 1] Jugador2
       0     [0 4 4 4 4 4 4 1]    2
    
    Jugador 2. ¿Casilla siembra?: 2
    Jugador1 [1 5 5 4 0 5 5 1] Jugador2
       2     [1 0 4 4 4 4 4 1]    2

    Referencia: http://www.ludoteka.com/wari.html
    Rúbrica: Inicializar juego (5 puntos), control jugadas (5 puntos), control de puntajes (10 puntos), distribuir fichas (5 puntos)

  • 3Eva_IT2014_T2 Gestionar Cocinas Inducción

    3ra Evaluación I Término 2014-2015, Septiembre 16, 2014 /ICM00794

    Tema 2. (30 puntos)cocina04 Para implementar cocinas de inducción se requiere realizar un registro de los datos de los interesados, usando el menú mostrado.

    Menú
    1. Registro de datos del usuario
    2. Verificar medidor eléctrico
    3. Verificar instalación
    4. Asignar incentivo tarifario
    5. Reporte
    6. Salir

    El registro de datos de usuario requiere de los siguientes datos:

    código medidor cédula nombre Tipo cocina Verifica medidor Verifica Instalación Asigna incentivo
    54321 091234 Maria 2 0 0 0
    • Los tipos de cocina son de 2, 4 y 5 “focos” (hornillas), las verificaciones y asignación se realizan en los siguientes pasos, por lo que inician en 0.
    • Para cada interesado, la empresa eléctrica verifica que el medidor en la residencia sea de 220V.
    • Después de la compra de la cocina, se tiene que verificar la instalación eléctrica usada es apropiada (1, sino use -1).
    • Para asignar el incentivo tarifario a todos los interesados, deben haber cumplido satisfactoriamente los pasos de verificación.
    • El reporte del programa debe mostrar el número de registrados, medidores verificados, instalaciones correctas y cuántos ha cumplido con los requisitos para obtener el incentivo tarifario.

    Realice un programa para gestionar los datos de este proceso.

    Referencia: http://www.ecuadorcambia.com/ http://www.eluniverso.com/noticias/2014/08/28/nota/3574916/mas-11-mil-inscritos-plan-cocinas
    Rúbrica: Menú (5 puntos), estructura de datos y uso (5 puntos), control de variables (10 puntos), verificación (5 puntos), reporte (5 puntos).