UNIVERSIDAD DEL ZULIA DIVISIÓN DE ESTUDIOS PARA GRADUADOS POSTGRADO DE INGENIERÍA COMPUTACIÓN APLICADA Técnicas de Programación Trabajo # 1 Profesor: Daniel Finol Maestrante: Roland Gómez, CI: 12.211.202 MARACAIBO, MARZO DE 2.006 Metodología: 1. Análisis del Problema 2. Diagrama de Flujo 3. Verificación de variables 4. Elaboración y revisión de los programas analizados teóricamente en clase (control de flujo y errores). 5. Elaboración del programa en cuestión, probando progresivamente las estructuras parciales. Análisis y Comentarios: Al leer e interpretar el problema planteado, se verificó que era necesario trabajar con indicadores de líneas PAR e IMPAR, así como también dos rutinas separadas para invertir cadenas y para cambiar mayúsculas por minúsculas (y viceversa). En el caso de almacenamiento de la línea de entrada se utilizó sólo una estructura. Basada en la rutina que se estudió en clase para el algoritmo de determinación de la línea con máxima longitud. Para resolver el problema de convertir el contador de línea en sólo dos valores: PAR (cero) e IMPAR (uno), se utilizó el módulo del contador respecto de la constante 2; así, para la línea 3 (p.e) 3 % 2 = 1 y este corresponde al valor IMPAR. En la estructura de inversión de líneas impares se logró manejar esta acción a través de la operación final: Arreglo Salida [i] = Arreglo entrada [longitud línea - i] Y para el caso de cambio de mayúsculas y minúsculas se determinó que la distancia entre las letras mayúsculas y las letras minúsculas es de 32 dígitos decimales en la tabla ASCCI. MAYUSCULAS: Desde Alt 65: A Hasta Alt 90: Z ABCDEFGHIJKLMNOPQRSTUVWXYZ MAY--->MIN: +32 MINUSCULAS: Desde Alt 97: a Hasta Alt 122: z abcdefghijklmnopqrstuvwxyz MIN--->MAY: -32 Por tanto para convertir de mayúsculas a minúsculas se suman 32 espacios decimales, y para el caso opuesto se restan. La estructura para líneas PARes se dejó redundante luego de primer “else” para hacer el código más legible al lector. El obstáculo más difícil de vencer, fue la necesidad de contar la cantidad total de líneas del archivo de entrada sin modificar el apuntador de la función “getchar()” que después sería usada para extraer cada línea y operar sobre ellas con las rutinas PAR o IMPAR. Determinar el número total de líneas, era necesario para limitar la rutina “While” que engloba todo el computo del programa. La solución de este obstáculo se logró empleando la función “getc()” con un “apuntador” que obtiene la dirección del archivo de entrada “entrada.txt” a través de la función “fopen()”. Las mejoras que quedan pendientes son las siguientes: 1. Que el programa solicite el archivo de entrada de datos, en vez de trabajar con uno fijo “entrada.txt” 2. Eliminar en las estructuras para la impresión de la salida los caracteres nulos que resultaron en la salida del programa compilado.