Universidad Nacional del Litoral Facultad de Ingeniería y Ciencias Hídricas Departamento de Informática
FUNDAMENTOS DE PROGRAMACIÓN Asignatura correspondiente al plan de estudios de la carrera de Ingeniería Informática
UNIDAD 5 INTRODUCCIÓN A LA PROGRAMACION Ing. Horacio Loyarte ® 2008
Unidad 5
2
UNIDAD 6
Introducción a la la Programación
Resumen de Conceptos Introducción En las unidades anteriores se han resuelto numerosos problemas escribiendo algoritmos mediante un pseudolenguaje o mediante diagramas de flujo. Para probar estos algoritmos se efectuaron pruebas de escritorio, ejecutando acciones y simulando lo que haría una computadora. A partir de aquí, se codificarán estas soluciones algorítmicas empleando un lenguaje de programación interpretable por una computadora, creando un programa. De esta forma, será la propia computadora la que ejecute el algoritmo y realice las acciones que conforman la solución. En esta unidad temática se abordarán los conceptos básicos relativos a la creación de programas. En primer lugar se hará una revisión de las etapas más importantes de la resolución de problemas. Luego, se explicará la forma en que se ejecutan (prueban) los programas. Como en general los programas no funcionan correctamente -la primera vez que se ejecutan- será necesario eliminar los errores, proceso que se denomina depuración de los programas. Existe una gran cantidad de lenguajes de programación. En esta materia se abordará uno en particular: el ANIS/ISO C++. Sin embargo, en esta unidad se verán las características generales que distinguen a unos lenguajes de otros y las ventajes relativas. Finalmente se propondrán algunos consejos acerca de un proceso que nunca debe faltar en la programación: la documentación. La documentación incluye toda la información que se puede suministrar acerca del programa y que no constituye el código del programa en si mismo. Se utilizará para los ejercicios un compilador C++, que permitirá afirmar los conceptos teóricos desarrollados y editar, compilar y ejecutar los primeros programas.
Revisión de Conceptos Se estudió en la Unidad 1 el proceso de resolución de problemas computacionales, donde se distinguen las etapas siguientes.
Definición del problema. Análisis del problema. Elección del método Codificación. Prueba. Depuración. Documentación.
Ingeniería Informática – Fundamentos de Programación 2008
Unidad 5
3
Las etapas correspondientes a la Codificación, Prueba y Depuración constituyen el proceso de Programación, que se desarrollará a partir de aquí en la asignatura.
Diagrama de las Etapas de Resolución de Problemas Inicio
Definición del problema
Análisis del problema
Programación
SI
Prueba
Error? NO
Fin
Nota: En este diagrama no se incluye el proceso de documentación ya que, como se verá luego, debe realizarse durante todas las etapas de resolución del problema.
Método Top Down Diseñar una estrategia, consiste en dividir o descomponer el problema original en una sucesión de problemas más simples, de tamaño suficientemente pequeño como para que cada uno de ello pueda ser comprendido en su totalidad. Esta técnica es conocida como Top-Down o de refinamientos sucesivos y como se verá más adelante se adapta perfectamente a la codificación de programas mediante un lenguaje modular y estructurado.
Ingeniería Informática – Fundamentos de Programación 2008
Unidad 5
4
P
P1
P2
P3
P3.1
P3.2
.................
Pn
P3.3
La estrategia nos define QUE hacer
Algoritmo En esta etapa se plantea en base a la estrategia, el conjunto de acciones que permitirán resolver el problema, mediante pseudocódigo, diagrama de flujo, etc.
El algoritmo define COMO hacerlo
Programa Un algoritmo codificado empleando un lenguaje de programación interpretable por una computadora constituye un programa.
Ejecución y prueba del programa Para poder probar un programa escrito en un lenguaje de programación de Alto Nivel es necesario generar un código ejecutable. Este proceso puede efectuarse mediante la COMPILACION o mediante la INTERPRETACIÓN del código fuente que editó el programador.
Código Ejecutable El Proceso de Compilación El proceso de compilación es una traducción del código fuente a un código ejecutable por la computadora. El resultado de compilar un archivo o programa fuente es un nuevo archivo llamado imagen ejecutable. Los archivos ejecutables pueden ser directamente utilizados por el usuario mediante una simple llamada desde el sistema operativo (por ejemplo un doble clic en un entorno gráfico tipo Windows). El archivo ejecutable ya no requiere del compilador ni del entorno que permitió su creación y puede ser utilizado en cualquier computadora (de plataforma compatible a la admitida por el compilador).
Ingeniería Informática – Fundamentos de Programación 2008
Unidad 5
5
Programa fuente
COMPILACION
Programa objeto Bibliotecas de código objeto
ENLACE (linking) Imagen ejecutable
El Proceso de Interpretación En este caso el intérprete procesa instrucción por instrucción, sin generar un código ejecutable completo. Cada vez que el usuarios necesita el ejecutar el programa deberá llamar al intérprete para que lo ejecute línea por línea.
Ventajas y Desventajas de Compiladores e Intérpretes Compilación Errores de sintaxis antes de la ejecución Velocidad de ejecución Protección del código.
Ventajas Interpretación Ejecución en una sola etapa Proceso interactivo de depuración
Desventajas Compilación Interpretación Proceso en varias etapas y a menudo Errores de sintaxis detectados engorroso. (*) durante la ejecución. Depuración laboriosa Baja velocidad de ejecución. Código abierto. (*) NOTA: existen compiladores con entornos de desarrollo integrados (IDE) que simplifican esta tarea.
Depuración de Programas Depuración o “debugging“ significa eliminar los errores de un programa. En ciertos casos esa depuración es sencilla, pero a menudo constituye un proceso penoso. Esto depende de los tipos de errores de un programa.
Ingeniería Informática – Fundamentos de Programación 2008
Unidad 5
6
Errores de un Programa i) Errores en Tiempo de Compilación: son aquellos en los que se infringen las reglas que definen la estructura de las declaraciones y sentencias. Estos errores son denominados también errores de sintaxis. Los errores de sintaxis más comunes son: errores tipográficos, falta del punto y coma final y utilización de variables que no han sido declaradas previamente. ii) Errores en Tiempo de Ejecución: los programas contiene estos errores cuando, a pesar de contar con sentencias sintácticamente válidas, se producen errores al ejecutar estas sentencias. Por ejemplo, un programa podría intentar utilizar un archivo que no existe en el disco o dividir un número por cero. iii) Errores de Lógica: en muchos casos el programa arroja resultados incorrectos a pesar de que no posea errores de sintaxis y tampoco de errores al ejecutarse. En general se trata de los casos en que el programa no realiza las tareas que originalmente se solicitaron en la definición del problema. Por ejemplo, puede que un problema requiera multiplicar dos números; por error, se diseña un algoritmo que los suma. Al probar el programa, se observaría que no hay errores de sintaxis, tampoco errores de ejecución y, sin embargo, al darle dos números al programa devolvería un valor inesperado.
Lenguajes de Programación Los algoritmos se convierten en programas al ser codificados empleando lenguajes, cuyas instrucciones pueden ser procesadas por una computadora. Pero las computadoras procesan los programas de acuerdo al tipo de lenguaje utilizado. Existen varias decenas de de lenguajes de programación y a su vez muchas versiones de cada uno de ellos. En base a la similitud de estos lenguajes de programación respecto de nuestro lenguaje natural se los puede clasificar en 3 tipos: Lenguajes de Máquina, Lenguajes Ensambladores y Lenguajes de alto Nivel.
Lenguajes de Máquina Los lenguajes de Máquina generan programas usando instrucciones que pueden ser resuletas directamente por el procesador de la computadora sin mediar trraducciones. Recuérdese que una computadora es un dispositivo electrónico que solo puede procesar dos estados de señales eléctricas: encendido y apagado; si se representan estas señales mediante un modelo matemático binario usando ceros y unos, es posible representar instrucciones que conformen un programa. Por ejemplo para sumar dos números se puede escribir: 0110
1001
1010
1011
Este tipo de lenguaje tiene la ventaja de que sus programas pueden ser ejecutado directamente sin un proceso de traducción previo, lo cual implica una velocidad del proceso óptima. Como contrapartida, puede observarse que aún en problemas sencillos, el código es complejo de crear, carece de legibilidad, es muy complejo de depurar ante la presencia de errores, y tiene total dependencia del procesador del la computadora. En respuesta a estos problemas se crearon lenguajes intermedios más cercanos al nivel del lenguaje natural que usan las personas para comunicarse.
Ingeniería Informática – Fundamentos de Programación 2008
Unidad 5
7
Lenguajes de Bajo Nivel Estos lenguajes pueden ser interpretados con más facilidad por una persona, pero la codificación continúa siendo una tarea compleja que requiere de una gran especialización por parte del programador. El lenguaje típico de bajo nivel es el ensamblador (Assembler Language), el cual está formado por sentencias nemotécnicas basadas en abreviaturas del inglés para representar acciones: ADD, MOV, SUB, DIV, etc. Para sumar dos valores numéricos usando ensamblador: ADD X, Y, SUMA Lo cual se lee: sumar el número almacenado en la posición de memoria X con el número de la posición Y. El resultado, ubicarlo en la posición de memoria representada por SUMA. La elaboración de soluciones a problemas grandes o complejos se hace muy engorrosa con este lenguaje. Además, está muy ligado al juego de instrucciones de la marca y modelo de cada microprocesador, lo cual hace que los programas sean poco portables. Su uso se limita al control de dispositivos electrónicos que requieren programas pequeños y sencillos, o partes de otros programas de computadoras. SI bien su eficiencia es muy alta, un programa en ensamblador requiere de una traducción a código máquina para que la computadora ejecute sus instrucciones. El programa escrito en ensamblador es el programa fuente y el generado por la traducción programa objeto.
Lenguajes de Alto Nivel Los lenguajes de alto nivel son los más populares entre los programadores, y su aparición permitió que la ingeniería del software abordar nuevos paradigmas y modelos, para resolver problemas de mayor complejidad. La formación de programadores es más rápida y su gran ventaja es la portabilidad: los programas son independientes del hardware. Su denominación de alto nivel se debe a que su sintaxis es similar a la forma en que las personas se comunican y dan órdenes, usualmente en forma imperativa. Estos lenguajes están conformados por un conjunto de palabras y símbolos que tienen una relación directa con su significado: while, if, write, else, class, file, float, string, etc. Los actuales lenguajes de alto nivel poseen sofisticados entornos de desarrollo que incluyen un amplio espectro de herramientas para la edición, compilación y depuración de los programas. La difusión de estos lenguajes, sumado a la accesibilidad de los productos de hardware a revolucionado la industria del software en los últimos 15 años. Como desventajas se debe mencionar el alto requerimiento de recursos de la computadora (memoria, espacio en disco, etc.) y el mayor tiempo de ejecución. Existen numerosos lenguajes de alto nivel. Algunos de ellos: Fortran, Cobol, Basic, Pascal, Modula, C, C++, Java, SmallTalk, Vusal Basic, Visual C++, Delphi (Object Pascal), C++ Builder, Python, etc. Se describen sus características salientes y su origen en la lista siguiente
Ingeniería Informática – Fundamentos de Programación 2008
Unidad 5
8
Algunos Lenguajes de Programación _ 1949: Primer Assembler (ShortCode). _ 1951: Grace Hooper escribe el primer compilador. _ 1957: FORTRAN: FORmula TRANslator. El lenguaje dominante en el ámbito científico. Velocidad de ejecución y tipos de datos de gran precisión. FORTAN IV, FORTRAN 77, FORTRAN 90, FORTRAN 95, FORTRAN 2000. _ 1958: LISP (John McCarthy, MIT): Nuevo paradigma de programación. Diseñado para inteligencia artificial. _ 1958: ALGOL: ALGOritmic Language. Propuesta de un comité científico internacional. para uso científico y académico. Primer lenguaje con gramática formal BNF (Bakcus-Naur Format). Recursividad. ALGOL68. _ 1959: COBOL: COmmon Business Oriented Language. Lenguaje orientado a problemas administrativos y contables, donde los formatos tienen suma importancia y no se requiere gran precisión numérica. _ 1964: BASIC (John Kemeny, Thomas Kurtz). Lenguaje intérprete de aplicación general. Muy sencillo de aprender. _ 1968: PASCAL (Niklaus Wirth, ETH). Paradigma de programación estructurada. Gran popularidad en ambientes académicos en los ´80 y parte de los ´90. Propone buenos hábitos de programación, fuertemente tipificado. Alocación dinámica de memoria. Las versiones de los 90 aceptan el modelo de objetos. Sucesores de Pascal: MODULA, MODULA-2. _ 1972: C (Dennis Ritchie, Bell Labs): Sucesor del lenguaje “B” . Estructuras de control similares a Pascal. Programas simples, rápidos y eficientes. Acepta aritmética de punteros, alocación dinámica de memoria. No es tan amigable como otros lenguajes. _ 1983: C++ (Bjarne Stroustroup ): C con Clases. Extensión de C al modelo de objetos. _ 1987: Perl (Larry Wall): Lenguaje de scripts. Poderoso para el tratamiento de texto y programación en Internet. _ 1990: Python (G. van Rossum). Lenguaje de script creado para un sistema distribuido (Univ. Amsterdam). Descendiente de ABC. Posee influencias de C/ C++ y otros lenguajes. _ 1994: Java (Sun Labs). Lenguaje multiplataforma, compilación intermedia para bytecode, programación de aplicaciones para Internet.
Clasificación de los Lenguajes de Programación según la metodología empleada para abordar el diseño del programa:
Procedimentales: estos se basan en un conjunto de subprogramas o subrutinas que resuelven diferentes partes del problema. Por ejemplo, para resolver el problema del cálculo del volumen de un cilindro, se podría tener un programa principal que pide los datos al usuario y muestra los resultados y un subprograma que realiza el cálculo. Imperativos y Declarativos: en los lenguajes imperativos las líneas del programa le dicen a la computadora que debe hacer. A lo largo de la
Ingeniería Informática – Fundamentos de Programación 2008
Unidad 5
9
evolución de los lenguajes de alto nivel se ha pasado desde los lenguajes imperativos hacia los lenguajes declarativos. Lenguajes declarativos son aquellos en que en las líneas del programa se encuentran las mismas abstracciones del problema en cuestión. Un buen ejemplo de lenguajes declarativos son los lenguajes orientados a objetos.
Orientados a objetos: en este caso, las representaciones que se plasman en el programa tiene una relación directa con la realidad del problema que resuelven. Siguiendo el ejemplo anterior (cáclulo el volumen de un cilindro), nuestro programa contaría con un objeto denominado interfaz de usuario y otro cilindro. Estos objetos se encargaría de realizar las operaciones de carga de datos y muestra de resultados (el objeto interfaz de usuario) y de cálculo del volumen (el objeto cilindro).
Orientados a eventos: los lenguajes manejados por eventos son aquellos en los que todas las acciones del programa son invocadas por algún suceso o evento que actúa de disparador. Este evento puede provenir del usuario (como apretar un botón del mouse) o del sistema (como el aviso de que hay espacio insuficiente en el disco). En cualquier caso, el evento es enviados al programa y este llamará a ejecutar las acciones específicas propuestas para tal evento.
Esta clasificación no es excluyente. Se pueden encontrar, por ejemplo, lenguajes orientados a objetos y manejados por eventos. De forma similar, algunos lenguajes son procedimentales y manejados por eventos. Algunos lenguajes, en particular, las versiones más recientes del lenguaje Pascal o C++ permiten programar en base a cualquiera de las clasificaciones anteriores e incluso combinarlas a todas en un solo programa. Sin embargo es conveniente utilizar de forma consistente un determinado modelo o metodología para abordar el problema.
Paradigmas de Programación Tema elaborado por la cátedra Paradigmas de Programación” de la Fec. Reg. Bs.As. de UTN. Disponible en http://www.tadp.com.ar/paradigmas/3
Surgimiento de los paradigmas La historia del desarrollo de los lenguajes de programación muestra una creciente evolución en la que se van incorporando elementos que permiten ir creando programas cada vez más sólidos y eficientes y a la vez facilitar la tarea del programador para su desarrollo, mantenimiento y adaptación. Sin embargo este proceso está lejos de ser lineal. Ciertas características básicas incorporadas por algunos lenguajes fueron puestas en duda y fuertemente criticadas por otros , de manera que se fueron perfilando diferentes teorías y grupos de lenguajes que postulaban formas disímiles de construir las soluciones. Así, a medida que fueron avanzando las ciencias de la computación surgen lo que actualmente definimos como “paradigmas” Un paradigma de programación es un modelo básico de diseño e implementación de programas. Un modelo que permite desarrollar programas conforme a ciertos principios o fundamentos específicos que se aceptan como válidos. En otras palabras, es una colección de modelos conceptuales que juntos
Ingeniería Informática – Fundamentos de Programación 2008
Unidad 5
10
modelan el proceso de diseño, orientan la forma de pensar y solucionar los problemas y, por lo tanto, determinan la estructura final de un programa.
Clasificación de los paradigmas A los paradigmas se los podría clasificar de diversas maneras según los criterios que se prioricen. Pero partiendo de los principios fundamentales de cada paradigma en cuanto a las orientaciones sobre la forma para construir las soluciones, podemos distinguir entre los procedimentales y los declarativos. • Paradigmas procedimentales u operacionales. Indican el modo de construir la solución, es decir detallan paso a paso el mecanismo para obtenerla. • Paradigmas declarativos. Describen las características que debe tener la solución. Es decir especifican “qué” se desea obtener pero no requieren indicar “cómo” obtenerla. Existen también otros paradigmas, que no se pueden encuadrar en esta clasificación como el heurístico y el concurrente. Por otra parte, hay autores que hacen otro tipo de enumeraciones o clasificaciones de paradigmas en base a criterios diferentes, por ejemplo como de “alto nivel” o “bajo nivel”, o que subclasifican estas categorías en otras más específicas o acotadas, como por ejemplo “Paradigma orientado a eventos”.
Paradigmas procedimentales También llamados operacionales, la característica fundamental de estos paradigmas es la secuencia computacional realizada etapa a etapa para resolver el problema. Los programas realizados con lenguajes procedimentales deben incluir en su codificación las instrucciones de control para determinar el flujo de la ejecución, como decisiones, iteraciones y otras, conformando, de esta manera, diferentes “algoritmos”. Actúan modificando repetidamente la representación de sus datos, basándose en asignaciones destructivas con efecto de lado. Utilizan un modelo en el que las variables están estrechamente relacionadas con direcciones de la memoria del ordenador. Cuando se ejecuta el programa, el contenido de estas direcciones se actualiza repetidamente, pues las variables reciben múltiples asignaciones, y al finalizar el trabajo, los valores finales de las variables representan el resultado. Su mayor dificultad reside en determinar si el valor computado es una solución correcta del problema, por lo que se han desarrollado multitud de técnicas de depuración y verificación para probar la corrección de los problemas desarrollados basándose en este tipo de paradigmas. En otras palabras, se basan en “cómo” lograr la solución.
Paradigmas declarativos Los paradigmas declarativos se basan en desarrollar programas especificando o “declarando” un conjunto de proposiciones, condiciones, restricciones, afirmaciones, ecuaciones o transformaciones que caracterizan al problema y describen su solución. A partir de esta información el sistema utiliza mecanismos internos de control que evalúan y relacionan adecuadamente dichas especificaciones, de manera de obtener la solución. No se necesita de la puntualización de los pasos a seguir para alcanzar una solución, ni instrucciones de control que conformen algoritmos. Estos paradigmas permiten utilizar variables para almacenar valores intermedios, pero no para actualizar estados de información. Si bien sus variables se
Ingeniería Informática – Fundamentos de Programación 2008
Unidad 5
11
relacionan con posiciones de memoria, no existe el concepto asignaciones destructivas. Las variables son usadas en expresiones, funciones o procedimientos, se unifican con diferentes valores, pero siempre con transparencia referencial, es decir, sin efecto de lado. Como estos paradigmas especifican la solución sin indicar cómo construirla, en principio, eliminan la necesidad de probar que el valor calculado es el valor solución. En otras palabras, se basan en “qué” es necesario especificar.
Principales paradigmas Paradigmas procedimentales:
Paradigma Orientado a Objetos Paradigma Imperativo
Paradigmas declarativos:
Paradigma Funcional Paradigma Lógico
Otros paradigmas:
Paradigma Heurístico Paradigma Concurrente
Investigue más sobre este tema en el siguiente enlace: http://www.tadp.com.ar/paradigmas/3
Ingeniería Informática – Fundamentos de Programación 2008
Unidad 5
12
Síntesis 1. Para poder utilizar un programa la computadora debe interpretarlo o compilarlo previamente. 2. Un compilador convierte el código fuente en una imagen ejecutable (por ejemplo, un archivo .exe). 3. Los programas compilados son más rápidos de ejecutar que los interpretados y permiten ser utilizados sin necesidad de distribuir el código fuente entre los usuarios. 4. Para que un programa funcione correctamente generalmente hay que corregir sus errores mediante el ”debugging” o depuración. 5. Existen tres tipos de errores: los de tiempo de compilación, los de tiempo de ejecución y los de lógica. 6. Los lenguajes de programación pueden clasificarse en lenguaje máquina, de bajo nivel y de alto nivel, dependiendo de la cercanía de su sintaxis con el lenguaje natural d las personas. Más cerac de la máquina implica menor nivel, más cerca de los lenguajes humanos, mayor nivel. 7. Un paradigma de programación es un modelo básico de diseño e implementación de programas, que determina la estructura final de los mismos. 8. Los paradigmas de programación de spueden clasificar en Paradigmas procedimentales: indican el modo de construir la solución detallando paso a paso el mecanismo para obtenerla; .Paradigmas declarativos: describen las características que debe tener la solución. Es decir especifican “qué” se desea obtener pero no requieren indicar “cómo” obtenerla; Paradigmas que heurístico y Paradigma concurrente. 9. Los lenguajes de alto nivel se pueden clasificar según los paradigmas de programación de soportan: procedimentales, imperativos/declarativos, orientados a objetos y manejados por eventos. Es posible que algunos lenguajes combinen estos paradigmas. 10. La documentación es muy importante y debe realizarse durante todo el proceso de resolución de un problema mediante computadoras. La documentación debe realizarse tanto en el programa (documentación interna) como en archivos o impresiones adicionales (documentación externa).
Ingeniería Informática – Fundamentos de Programación 2008
Unidad 5
13
Actividades Ejercicios Ejercicio 5.1 Encienda su computadora e inicie el sistema operativo instalado en su PC. Ejecute la aplicación Borland C++ Builder (Windows) o Borland Kylix (Linux) y desde el menú FILE|NEW seleccione la opción Console Wizard para crear una aplicación independiente de los componentes visuales del entorno gráfico.
Debe aparecer una ventana de edición como la de la figura. Ejercicio 5.2 i) Escriba en la ventana de edición del programa anterior el código fuente C++ del recuadro siguiente. No escriba los números de línea (solo se indican para hacer referencias a las sentencias) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
//G5Ejr2.cpp (Guia 5-Ejercicio 2) pragma hdrstop #include #include #include //----------------------------------------------#pragma argsused int main(int argc, char* argv[]) { int i=0,n; float suma=0; float x; cout<<"Cálculo del promedio:"<<endl; cout<<"Cantidad de datos:"; cin>>n;
Ingeniería Informática – Fundamentos de Programación 2008
Unidad 5
14
while (i>x; suma=suma+x; } float prom=suma/n; cout<<endl<<endl; cout<<"Promedio="<<prom; getch(); return 0;
16 17 18 19 20 21 22 23 24 25 26
}
ii) Salve el programa fuente en disco en una carpeta nueva con el nombre g5ejer2.cpp iii) Compile y ejecute el programa. iv) Si tuvo errores de sintaxis trate de interpretarlos y corregirlos, hasta que la compilación sea exitosa. v) Analice la lógica el programa e incorpore comentarios en el código que faciliten su interpretación. vi) Salga del entorno de C++Builder/Kylix y ubique el archivo ejecutable que generó la compilación y pruebe ejecutarlo directamente. Ejercicio 5.3 Modifique las siguientes líneas del programa anterior para producir errores de sintaxis o simplemente algunos cambios. Interprete los errores y las modificaciones efectuadas. i) Quite la palabra float de la línea 12. ii) Elimine <<endl en la línea 13 iii) Quite la línea 4 completa. Ejercicio 5.4 Modifique el programa C++ del ejercicio 2 para obtener el promedio de un conjunto de calificaciones de un grupo de alumnos. Los datos terminan con la nota 9999. Guarde este programa con el nombre g5ejer4.cpp
Cuestionario 5.1. A partir de considerar los tres tipos de errores descriptos en los párrafos anteriores y las etapas para la resolución de un problema utilizando la programación responda la siguiente pregunta: ¿Cuáles son los errores más frecuentes en el diseño de un programa? 5.2. Según la explicación de los párrafos anteriores, se puede afirmar que existen lenguajes de programación que permiten programar en forma procedimental y orientada a objetos al mismo tiempo. Con la información que usted tiene hasta este momento elabore algunas hipótesis acerca de las ventajas que pueden ofrecer este tipo de lenguaje. 5.3. Establezca relaciones entre el proceso de documentación y los errores de programación y responda:
Ingeniería Informática – Fundamentos de Programación 2008
Unidad 5
15
a) ¿Será posible que un programa con la documentación interna incorrecta compile sin errores de sintaxis? ¿Y sin errores de tiempo de ejecución? b) ¿Cómo respondería las preguntas anteriores si se tratara de la documentación externa? ¿Para qué se hace una documentación del programa? 5.4. Realice nuevamente el diagrama de las etapas de resolución del problema incorporando el proceso de documentación. 5.5. En el proceso de compilación luego de generar el programa objeto, se produce un enlace (linking) con librerías de código creado previamente (ver página 5). ¿Cómo se le indica al compilador –en el programa del ejercicio 5.2– cuáles librerías debe enlazar? 5.6. SI UD. está elaborando un programa en su lugar de trabajo, el cual funciona, pero requiere de algunas modificaciones, y desea continuar con su desarrollo en su casa, ¿Cuáles archivos copia para continuar el programa: los del programa fuente, o los del programa ejecutable? Explique.
Recordatorio
Fundamentos de Programación Régimen de evaluación y promoción 2008 Evaluaciones parciales Se efectuarán 2 evaluaciones parciales de carácter individual. Para el cálculo del promedio entre ambas calificaciones, la del 2do parcial se computa doble. Solo se recupera el 2do Parcial y la nota del recuperatorio sustituye la nota inicial. Promoción Promoverán directamente la asignatura sin examen final, aquellos alumnos que obtengan simultáneamente: a. Calificación de 75% o más de promedio entre las 2 evaluaciones parciales (computando doble el 2do parcial) b. 75% de asistencia a las clases teóricas y prácticas. Se admite la recuperación del 2do parcial para promover la materia. Regularidad Los alumnos que no promuevan directamente la asignatura pero cumplan con las dos condiciones siguientes, serán considerados alumnos regulares: a. Promedio de 50% entre los 2 parciales (la nota del 2do parcial vale doble). b. 75% de asistencia a las clases teóricas y prácticas. Alumnos Libres Serán considerados libres quienes no cumplan con las condiciones de regularidad. Los alumnos libres rendirán el mismo examen final que los alumnos regulares, más ejercicios y/o preguntas adicionales.
Ingeniería Informática – Fundamentos de Programación 2008