Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-1322
I Semestre 2011
[<=] [home] [<>] [\/] [=>]
CI-1322 Autómatas y compiladores

Tarea #1 [solución]

Compilación de un programa

FOR numero := 1 TO N DO BEGIN
    suma := 0;
    temp := numero;
    WHILE temp <> 0 DO BEGIN
        digito := temp MOD 10;     { <- }
        suma   := suma + (digito * digito * digito);  
        temp   := temp DIV 10;
    END;
END;
VAR     val

numero: 153
temp:    15
suma:    27
digito:   3
Ejecución de Armstrong.pas

      Para enseñar programación de computadores, algunos profesores usan este bloque de código que contiene las instrucciones de programación más importantes. Por ejemplo, puede consultar:

Di Mare, Adolfo:
Propuesta para mejorar el curso Principios de Informática, Reporte Técnico ECCI-97-01, Escuela de Ciencias de la Computación e Informática; Universidad de Costa Rica;1997.
     http://www.di-mare.com/adolfo/p/princinf.htm

      A partir de este bloque de código obtenga 2 programas, uno escrito en Pascal y otro en C++. Escoja y use 2 compiladores para obtener el lenguaje ensamblador para cada versión del programa. Asegúrese de quitarle las opciones de optimización de código a cada compilador antes de correrlo y obtener resultados.

      Tome el código ensamblador que ha obtenido para cada versión del programa y modifíquelo incluyéndole comentarios explicativos que muestres la correspondencia entre el programa fuente y el que produce cada compilador. Luego compare los resultados obtenidos, y destaque las diferencias importanes que encuentre. Haga un concienzudo análisis de los resultados obtenidos y describa con exactitud las conclusiones a las que llega.

 

Entrega de la tarea

PROJECT_NAME          = "952809 Tarea Programada #1"
OUTPUT_LANGUAGE       = Spanish
OUTPUT_DIRECTORY      = .
GENERATE_LATEX        = NO
GENERATE_MAN          = NO
GENERATE_RTF          = NO
CASE_SENSE_NAMES      = YES
INPUT_ENCODING        = ISO-8859-1
INPUT                 = p2-ta-1.cpp rational.h
RECURSIVE             = NO
QUIET                 = YES
JAVADOC_AUTOBRIEF     = YES
EXTRACT_ALL           = YES
EXTRACT_PRIVATE       = YES
EXTRACT_STATIC        = YES
EXTRACT_LOCAL_CLASSES = YES
INLINE_INHERITED_MEMB = YES
SOURCE_BROWSER        = YES
INLINE_SOURCES        = NO
STRIP_CODE_COMMENTS   = NO
REFERENCED_BY_RELATION= NO
REFERENCES_RELATION   = NO
FULL_PATH_NAMES       = NO

SORT_MEMBER_DOCS      = NO
SORT_BRIEF_DOCS       = NO
CLASS_DIAGRAMS        = YES

ENABLE_PREPROCESSING  = YES
MACRO_EXPANSION       = YES
EXPAND_ONLY_PREDEF    = YES
PREDEFINED            = "DOXYGEN_COMMENT" \
                        "_MSC_VER=1300"
EXAMPLE_PATH          = .

#--- TODOS ESTOS SON MENOS COMUNES ---
# DISTRIBUTE_GROUP_DOC = YES
# ENABLE_PREPROCESSING = YES
# EXAMPLE_PATH         = example_test.cpp
# FILE_PATTERNS        = diagrams_*.h
# GENERATE_TAGFILE     = example.tag
# HAVE_DOT             = YES
# PERL_PATH            = perl
# TAGFILES             = example.tag=../../example/html

# Manual ==> http://www.doxygen.org/manual.html

      Luego de escribir la documentación de su programa envíe su trabajo por correo electrónico. Para esto, haga un archivo empacado .zip cuyo nombre sea su número de carnet. Incluya en ese archivo lo siguiente:

  1. Un documento en formato HTML que describa el trabajo que realizó. Incluya el nombre del compilador que usó.
  2. La especificación de su programa.
  3. Archivo de configuración Doxygen (los asistentes usrarán este archivo de configuración para generar la documentación de su programa, por lo que sobra que usted incluya esa documentaciónen su archivo .zip).
  4. El código fuente de sus programas (archivos de implementación *.c, *.cpp, *.h, etc.).
  5. Los archivos y datos de prueba para su programa.
  6. Un archivo de enlace Internet, con extensión .url que permita abrir la página Internet en que está la documentación completa de su programa.

      Las cuentas de computador en la ECCI se asignan de acuerdo al número de carnet. Por ejemplo, si su carnet es el número 95-28-09, para entregar su tarea usted debe crear el archivo 952809.zip para enviarlo por correo electrónico. Si varios alumnos participaron en la confección de la tareas, sus carnets deben incluirse en el nombre del archivo .zip: 952809-952810-952811.zip.

      Luego use FTP para subir a la red todas sus páginas Internet. En la práctica, una forma simple de obtener la página es escribirla usando algún procesador de texto como OpenOffice writer y luego guardar el documento en formato HTML. Recuerde subir todos los archivos porque cada imagen usada en su documento está en un archivo aparte.

Inicio
   ==> Ejecutar ==> [ Notepad.exe ] ...
   ==> Guardar como ==> [ 952809.url ]
[InternetShortcut]
URL=http://www.di-mare.com/adolfo/p/Matrix.htm
952809.url

      Recuerde incluir en su archivo CARNET.zip un acceso directo para abrir su página. Para crearlo, puede jalarlo del hojeador cuando abra la página, o también puede usar un editor de texto como Notepad.exe para crear el archivo de texto como se muestra en el archivo 952809.url en esta figura.

      Después de la fecha de entrega del programa, puede usted instalar en su cuenta personal su solución (no instale antes su solución en Internet, pues en ese caso sería usted culpable de facilitar la copia de su trabajo, y en consecuencia se haría acreedor a la sanción respectiva).

      Por ejemplo, para entregar su tarea programada, el estudiante 952809 crea su archivo 952809.zip en el que aparece estos archivos:

p2-ta-1.cpp
Solución programada de la tarea
 
rational.h
Declaraciones e interfaz de la clase "rational"
rational.cpp
Definiciones para la clase "rational" (en este caso este archivo no existe, pues la clase rational.h es una clase emplantillada por lo que todos los fuentes deben estar en el archivo de encabezado rational.h).
 
952809.doc
Documentación, escrita con Word (incluye la portada)
952809.htm
Página Internet con toda la documentación
952809.dxg
Archivo de configuración Doxygen.
952809.url
Enlace para abrir la página Internet
 
p2-ta-1.cbp
Archivo para compilar el programa con CodeBlocks [GNU C++].
p2-ta-1.dsp
(Opcional) Archivo para compilar el programa con MSC++ v6.x
p2-ta-1.vcproj
(Opcional) Archivo para compilar el programa con MSC++ .NET
p2-ta-1.dev
(Opcional) Archivo para compilar el programa con GNU C++.

[mailto:] Entrega de Tareas

Tiempo de entrega: 7 días
Modalidad: En parejas

 

Políticas de Corrección de Tareas

  1. La falta de cualquier especificación debe ser castigada fuertemente.
  2. Correcta indentación del código fuente.
  3. Correcto espaciado del código fuente.
  4. Código fuente escrito de manera que se legible y claro.
  5. Uso de indentificadores significativos.

Soluciones

[mailto:] Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 2011
Derechos de autor reservados © 2011
[home] <> [/\]