Matemática para la Computación

Anuncio
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.
Descargar