Autor: Edison Del Rosario

  • 3Eva_IIT2012_T2 Practicar alfabeto radiofónico con Python

    3ra Evaluación II Término 2012-2013, Febrero 20, 2013 /ICM00794

    Tema 2 (30 puntos). Realice un programa para practicar el uso del alfabeto radiofónico usando un menú como el siguiente:

    https://www.icao.int/about-icao/Pages/ES/default_ES.aspx
    https://www.icao.int
    1. Mostrar alfabeto radiofónico.- muestra la tabla del alfabeto radiofónico.
    2. Prueba de escritura.- Presenta una cadena con 6 letras del alfabeto generadas de forma aleatoria, pregunta al usuario la conversión a alfabeto radiofónico, luego verifica y muestra si fue correctamente escrita. Si hay errores se permiten hasta 3 intentos para completarla.
    3. Prueba de lectura. Presenta una cadena con 6 palabras del alfabeto radiofónico seleccionadas de forma aleatoria, luego pregunta al usuario las letras correspondientes, verificando y mostrando si se superó la prueba. En caso de errores, solo admiten hasta 3 intentos para superar la prueba.
    4. Salir
    >> radiofono
     ** Entrenamiento Alfabeto Radiofónico **
     1. Mostrar alfabeto radiofónico
     2. Prueba de escritura
     3. Prueba de lectura
     4. Salir
     ¿cuál opción?:2
     ** Prueba de escritura
     GUAYAS
     Escriba código:
     GOLF UNIFORM ALFA YANKEE ALFA SIERRA
     Correcto…!
     ¿cuál opción?:3
     ** Prueba de Lectura
     GOLF UNIFORM ALFA YANKEE ALFA SIERRA
     Escriba código: GUAYAS
     Correcto....!

    Nota: Puede usar las funciones del tema anterior. Para comparar cadenas: strcmp(a ,b).

    Rúbrica: menú (5 puntos), ítem 1 (5 puntos), ítem 2 (5 puntos), ítem 3 (10 puntos), Programa estructurado (5 puntos)


    Referencia: Parte 1: 3Eva_IIT2012_T1 Alfabeto radiofónico con Python

    Wikipedia: Alfabeto radiofónico

  • 3Eva_IIT2012_T1 Alfabeto radiofónico con Python

    3ra Evaluación II Término 2012-2013, Febrero 20, 2013 /ICM00794

    Tema 1. (20 puntos). El alfabeto radiofónico establecido por Organización de Aviación Civil Internacional (OACI),

    https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Military_history/News/April_2016/Book_reviews#/media/File:Bundesarchiv_Bild_101I-198-1395-08A,_Russland,_Soldat_und_Funker_in_Deckung.jpg
    A German Army sergeant and radio operator in 1943

    es un lenguaje para la comunicación empleado cuando es importante que no se produzcan errores en la comprensión de datos o códigos tal como para deletrear la identificación de un contenedor de carga, una aeronave, etc.

    letra Palabra Letra Palabra Letra Palabra
    A Alfa J Juliet S Sierra
    B Bravo K Kilo T Tango
    C Charlie L Lima U Uniform
    D Delta M Mike V Victor
    E Echo N November W Whiskey
    F Foxtrot O Oscar X X-ray
    G Golf P Papa Y Yankee
    H Hotel Q Quebec Z Zulu
    I India R Romeo

    a) Realice una función coderadio(secuencia) que reciba una secuencia de letras y entregue una cadena de caracteres con las palabras del alfabeto radiofónico. Ejemplo:

    >>> coderadio('ESPOL')
    Echo Sierra Papa Oscar Lima

    b) Escriba una función decoradio(cadena) que reciba una cadena de caracteres con las palabras del alfabeto radiofónico, y muestre la secuencia de letras. Ejemplo:

    >>> decoradio('Echo Sierra Papa Oscar Lima')
    ESPOL

    Nota: para declarar una cadena vacía: cadena='', para unir cadenas puede usar strcat(a,b).
    Rúbrica: definición de funciones (5 puntos), literal a. (5 puntos), literal b.(10 puntos)


    radiofonico = [['A','Alfa'],   ['B','Bravo'], ['C','Charlie'],
                   ['D','Delta'],  ['E','Echo'],  ['F','Foxtrot'],
                   ['G','Golf'],   ['H','Hotel'], ['I','India'],
                   ['J','Juliet'], ['K','Kilo'],  ['L','Lima'],
                   ['M','Mike'],   ['N','November'],['O','Oscar'],
                   ['P','Papa'],   ['Q','Quebec'],['R','Romeo'],
                   ['S','Sierra'], ['T','Tango'], ['U','Uniform'],
                   ['V','Victor'], ['W','Whiskey'],['X','X-ray'],
                   ['Y','Yankee'], ['Z','Zulu']]
    

    Referencia: Wikipedia: Alfabeto radiofónico.
    Ejercicio Parte 2: 3Eva_IIT2012_T2 Practicar alfabeto radiofónico con Python

    Iberia. Wikiberia: Alfabeto aeronaútico. 27 may 2013

  • s3Eva_IIT2012_T1 Alfabeto radiofónico con Python

    Ejercicio: 3Eva_IIT2012_T1 Alfabeto radiofónico

    Para resolver el ejercicio de alfabeto radiofónico en Python, se propone usar el algoritmo de búsqueda sobre una lista con las parejas [letras,código].

    radiofonico = [['A','Alfa'],   ['B','Bravo'],
                   ['C','Charlie'],['D','Delta'],
                   ['E','Echo'],   ['F','Foxtrot'],
                   ['G','Golf'],   ['H','Hotel'],
                   ['I','India'],  ['J','Juliet'],
                   ['K','Kilo'],   ['L','Lima'],
                   ['M','Mike'],   ['N','November'],
                   ['O','Oscar'],  ['P','Papa'],
                   ['Q','Quebec'], ['R','Romeo'],
                   ['S','Sierra'], ['T','Tango'],
                   ['U','Uniform'],['V','Victor'],
                   ['W','Whiskey'],['X','X-ray'],
                   ['Y','Yankee'], ['Z','Zulu']]
    
    

    Instrucciones en  Python

    Para la función coderadio(), la palabra ingresada se convierten todas sus letras a mayúsculas con .upper(), así se facilita la búsqueda sobre la lista radiofónico.

    >>> coderadio('ESPOL')
    Echo Sierra Papa Oscar Lima

    Se aplica el algoritmo de búsqueda  usando cada letra de la palabra sobre cada pareja de lista radiofónico, usando la bandera encontre para salir del bucle de búsqueda. La variable donde indica la posición de coincidencia entre la letra de la palabra y la letra de la lista radiofónico.

    El proceso contrario con la función decoradio(), se toma la primera letra de cada palabra de la frase ingresada.

    >>> decoradio('Echo Sierra Papa Oscar Lima')
    ESPOL

    el detalle de instrucciones se presenta a continuación.

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IIT2012_T1 Alfabeto radiofónico
    # Tarea: En la segunda función considerar
    # que se pueden dar palabras que no son radiofónicas.
    #      mejorar la función usando la tabla radiofónico.
    
    def coderadio(palabra,radiofonico):
        # analizar secuencia a codificar
        palabra = palabra.upper()
        frase = '' 
    
        n = len(palabra)
        i = 0
        while not(i>=n):
            letra = palabra[i]
            
            # Buscar letra en radiofonico
            encontre = 0
            donde    = -1
            m = len(radiofonico)
    
            j = 0
            while not(j>=m or encontre==1):
                if (letra == radiofonico[j][0]):
                    encontre = 1
                    donde = j
                    equivale = radiofonico[j][1]
                j = j + 1 # busca la siguiente fila
    
            # completa la frase
            if len(frase)==0:
                espacio = ''
            else:
                espacio = ' '
            frase = frase + espacio + equivale
            
            i = i + 1 # cambia letra de palabra
    
        return(frase)
    
    def decoradio(frase,radiofonico):
        # Solo un ejemplo para decodificar,
        # Tarea, considerar que pueden enviar 
        #   una palabra que no se encuentra en tabla
    
        partes = frase.split(' ')
        n = len(partes)
        palabra = ''
    
        i = 0
        while not(i>=n):
            palabra = palabra + partes[i][0]
            i = i + 1
        return(palabra)
    

    Tarea: Continuar con el tema 2 para crear el menú con las partes para practicar el alfabeto radiofónico.

  • 3Eva_IT2012_T4 Registrar y despachar pedidos

    3ra Evaluación I Término 2012-2013, Septiembre 11, 2012 /ICM00794

    Tema 4 (25 puntos) Una tienda administra pedidos vía electrónica usando el menú mostrado.

    Menú
     1. Ingresar Inventario
     2. Ingresar Pedido
     3. Inventario Final
     4. Salir

    Pedido es otra lista de los m tickets (números enteros) junto con el código del artículo que el cliente desea (un solo artículo por cliente) y la cantidad requerida.

    • Inventario final determina la cantidad total sobrante o faltante de cada artículo para atender las solicitudes de todos los clientes y muestra el resultado.
      Realice un programa que administre con un menú los datos de ambas listas.
    Inventario
    Codigo Artículo Cantidad
    1 Lápiz 100
    2 Borrador 70
    n ... ...
    Pedido
    Ticket Cliente Código Cantidad
    1 María 2 4
    2 Pedro 1 5
    3 Juan 1 10
    m ... ... ...

    Rúbrica: Definición y uso de estructura de datos (5 puntos), Menú (5 puntos), Ingreso de registros en tablas (5 puntos), calcular y mostrar el inventario final (10 puntos)

  • 3Eva_IT2012_T3 Tonalidad de colores en GIF

    3ra Evaluación I Término 2012-2013, Septiembre 11, 2012 /ICM00794

    Tema 3 (25 puntos). El formato GIF para imágenes digitales, usa la técnica de color indexado con 256 tonalidades de color por pixel [0-255] en una matriz de pixeles de tamaño nxm.

    Se requiere separar los distintos colores, para identificar y determinar las cantidades de cada tonalidad de color mediante el uso de un vector de frecuencias [0-255].

    Realice una función colorimg(imagen) que reciba la matriz de una imagen de tamaño nxm y presente como resultado el vector de frecuencias de los colores indexados.

    imagen.gif
    30 30 30 0 0
    30 30 30 0 0
    170 170 30 30 0
    80 80 170 30 30
    80 80 80 170 170
    >>frecuencia=colorimg(imagen)
        color = [0, 1, 2, ..., 30, ..., 80, ..., 170, ...]
    frecuencia =[5, 0, 0, ..., 10, ...,  5, ...,   5, ...]
    usar para ejemplo en python:
    matriz = np.array([[30, 30, 30, 0, 0],
                       [30, 30, 30, 0, 0],
                       [170, 170, 30, 30, 0],
                       [80, 80, 170, 30, 30],
                       [80, 80, 80, 170, 170]])

    Nota: El rango de color es [0-255] y el indice de frecuencias es [1-256] en matlab
    Referencia: http://www.ecured.cu/index.php/Color_indexado

    Rúbrica: Definición de Función (5 puntos), manejo de tamaño de matriz (5 puntos), vector de frecuencias (15 puntos).

  • s3Eva_IT2012_T3 Tonalidad de colores en GIF

    Ejercicio: 3Eva_IT2012_T3 Tonalidad de colores en GIF

    resultados obtenidos

    color, frecuencia
    0 5
    1 0
    2 0
    ...
    28 0
    29 0
    30 10
    31 0
    32 0
    ...
    78 0
    79 0
    80 5
    81 0
    ...
    

    Algoritmo en Python

    # 3Eva_IT2012_T3 Tonalidad de colores en GIF
    import numpy as np
    
    # INGRESO
    matriz = np.array([[30, 30, 30, 0, 0],
                       [30, 30, 30, 0, 0],
                       [170, 170, 30, 30, 0],
                       [80, 80, 170, 30, 30],
                       [80, 80, 80, 170, 170]])
    
    # PROCEDIMIENTO
    color = np.arange(0,256,1)
    frecuencia = np.zeros(256,dtype=int)
    tamano = np.shape(matriz)
    n = tamano[0]
    m = tamano[1]
    for i in range(0,n,1):
        for j in range(0,m,1):
            unvalor = matriz[i,j]
            frecuencia[unvalor] = frecuencia[unvalor] + 1
    
    # SALIDA
    print('color, frecuencia')
    for i in range(0,256,1):
        print(color[i],frecuencia[i])
    
  • 3Eva_IT2012_T2 Validar infix y convertir a prefix

    3ra Evaluación I Término 2012-2013, Septiembre 11, 2012 /ICM00794

    TEMA 2 (25 puntos) Las expresiones aritméticas en notación INFIX establece que en medio de los operandos (números[0-9]) debe existir un operador aritmético conocido (+, –, *, /).

    En la computadora a veces se necesita representar la operación en notación PREFIX, la cual establece que primero se colocan el operador aritmético y luego los operandos.

    Suponga que solamente tendrá como operandos números de una cifra.

    Ejemplo:
    INFIX PREFIX
    2+3 + 2 3
    >>validainfix('2+3') 
    ans= 1
    >>validainfix('23+') 
    ans=0
    >>in2prefix('2+3') 
    ans= + 2 3
    9-6 - 9 6
    5*4 * 5 4
    8/7 / 8 7

    a) Escriba la función validainfix(cadena), la cual recibe una cadena de 3 caracteres solamente y verifica que los 2 operandos están en las posiciones inicial y final, y existe un operador aritmético en la mitad. La función devuelve 1 si es una cadena válida y 0 si no lo es.

    b) Escriba la función in2prefix(cadena), la cual recibe una cadena de 3 caracteres previamente validado (llame a la función validar), y convierta la operación de notación INFIX a notación PREFIX.

    Rúbrica: Definición de funciones (5 puntos). Validación de números y operadores (15 puntos), cambio de notación (10 puntos).

  • s3Eva_IT2012_T2 Validar infix y convertir a prefix

    Ejercicio: 3Eva_IT2012_T2 Validar infix y convertir a prefix

    resultados obtenidos,

    >>> in2prefix('2+3')
    '+ 2 3'
    >>> validainfix('2+3')
    True
    >>> validainfix('23+')
    False
    >>> in2prefix('2+3')
    '+ 2 3'
    >>> 
    

    Algoritmo en Python

    # 3Eva_IT2012_T2 Validar infix y convertir a prefix
    
    def validainfix(cadena):
        numero ='0123456789'
        operador ='+-'
        c1 = cadena[0] in numero
        c2 = cadena[2] in numero
        c3 = cadena[1] in operador
    
        z = 'use 3 dígitos'
        if len(cadena)==3:
            z = c1 and c2 and c3
        return(z)
    
    def in2prefix(cadena):
        z = 'use 3 dígitos'
        condicion = validainfix(cadena)
        if len(cadena)==3 and condicion:
            z = cadena[1]
            z = z+' '+cadena[0]
            z = z+' '+cadena[2]
        return(z)
    
  • 3Eva_IT2012_T1 Juego tipo bingo con fichas rojas y azules

    3ra Evaluación I Término 2012-2013, Septiembre 11, 2012 /ICM00794

    Tema 1 (25 puntos). Un ánfora contiene 20 fichas rojas y 10 fichas azules. sorteo bingo azul roja

    Cada jugador debe tomar una muestra al azar de 5 fichas y determina cuántas fichas rojas y cuántas fichas azules se obtuvieron.

    Escriba un programa que simule el juego para n jugadores y muestre el promedio de fichas rojas y azules que se obtuvieron en todos los intentos.

    Jugador Ficha Roja Ficha Azul
    1 3 2
    2 4 1
    3 2 3
    Promedio 3 2

    Rúbrica: definición de aleatorios (5 puntos), control por jugador (5 puntos), promedios (10 puntos), programa estructurado (5 puntos)

    Referencia: http://blog.espol.edu.ec/estg1003/frecuencia-relativa/

  • 3Eva_IIT2011~T4 Juego de palabras desde archivo

    3ra Evaluación II Término 2011-2012, Febrero 2012 /FIEC

    Tema 4. (40 puntos) Escriba un programa para jugar al “ahorcado”, las palabras se encuentran en un archivo, debe seleccionarlas aleatoriamente y presentarla colocando subguiones en lugar de las letras.

    Solicitar al usuario que ingrese una letra y si se encuentra una coincidencia mostrar la letra en la posición que le corresponde (las veces que sea encontrada), hasta que el usuario adivine la palabra.

    Al jugador se le mostrará al inicio del juego el número de oportunidades que tiene, que corresponde al doble del total de las letras de la palabra.

    Si no logra adivinar se mostrará el mensaje “ahorcado” y la palabra completa.

    ahorcado.txt

    examen
    caminante
    montana
    programador
    cero

    salida por pantalla (con la palabra montana)

    _ _ _ _ _ _ _
    Tiene 14 oportunidades, ingrese una letra:
    a
    _ _ _ _ a _ a

    Referencia: 2Eva_IT2005_T3 Adivina palabra (ahorcado)