Unidad 3APLICAR LOS PRINCIPIOS DEPROGRAMACIÓN EN LA SOLUCION DEPROBLEMASGovea Rodríguez Julio cesarInformática 4°A
3.- Poner A Punto El Programa Mediante El Uso DeUn Editor De Lenguaje De ProgramaciónEstructurado.Hay distintos lenguajes ...
Algunos de los lenguajes más difundidos son:•BASIC, que durante mucho tiempo se ha considerado un buen lenguaje para comen...
3.1.- Captura Y Edición Del ProgramaSe puede crear un archivo que contenga el programa completo, como en los ejemplos ques...
3.2. Compilar El Programa, Depurar El Programa,Ejecutar El ProgramaOtras de las opciones de utilidad en dicho menú context...
En los programas utilizaremos normalmente funciones o clases que están predefinidas enalguna de las bibliotecas que consti...
vayamos construyendo nosotros mismos. Podéis ver un ejemplo (un poco más complejo) deesta situación en el paquete modular ...
Observaréis que las variables que han sido definidas en el programa, junto con sus valoresaparecen en la Ventana de DEPURA...
partir de ahí puede realizarse alguna de las siguientes posibilidades: retomarse la ejecuciónnormal • seguir paso a paso •...
Upcoming SlideShare
Loading in …5
×

Unidad 3

215 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
215
On SlideShare
0
From Embeds
0
Number of Embeds
27
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Unidad 3

  1. 1. Unidad 3APLICAR LOS PRINCIPIOS DEPROGRAMACIÓN EN LA SOLUCION DEPROBLEMASGovea Rodríguez Julio cesarInformática 4°A
  2. 2. 3.- Poner A Punto El Programa Mediante El Uso DeUn Editor De Lenguaje De ProgramaciónEstructurado.Hay distintos lenguajes que nos permiten dar instrucciones a un ordenador (un programa deordenador es básicamente eso: un conjunto de órdenes para un ordenador).El lenguaje más directo es el propio del ordenador, llamado "lenguaje de máquina" o"código máquina", formado por secuencias de ceros y unos. Este lenguaje es muy pocointuitivo para nosotros, y difícil de usar. Por ello se recurre a otros lenguajes másavanzados, más cercanos al propio lenguaje humano (lenguajes de alto nivel), y es entoncesel mismo ordenador el que se encarga de convertirlo a algo que pueda manejardirectamente.Se puede distinguir dos tipos de lenguajes, según se realice esta conversión:1. En los intérpretes, cada instrucción que contiene el programa se va convirtiendo a códigomáquina antes de ejecutarla, lo que hace que sean más lentos (a cambio, los intérpretessuelen ser más fáciles de crear, lo que permite que sean baratos y que puedan funcionar enordenadores con menor potencia).2. En los compiladores, se convierte todo el programa en bloque a código máquina ydespués se ejecuta. Así, hay que esperar más que en un intérprete para comenzar a vertrabajar el programa, pero después éste funciona mucho más rápido (a cambio, loscompiladores son más caros y suelen requerir ordenadores más potentes).Hay lenguajes para los que sólo hay disponibles intérpretes, otros para los que sólo existencompiladores, y otros en los que se puede elegir entre ambos. La mayoría de los lenguajesactuales son compilados, y el entorno de desarrollo suele incluir:•Un editor para escribir o revisar los programas.•El compilador propiamente dicho, que los convierte a código máquina.•Otros módulos auxiliares, como enlazadores (linkers) para unir distintos subprogramas, ydepuradores (debuggers) para ayudar a descubrir errores.Es cada vez más frecuente que todos estos pasos se puedan dar desde un único "entornointegrado".Por ejemplo, el entorno de Turbo Pascal tiene la siguiente apariencia:
  3. 3. Algunos de los lenguajes más difundidos son:•BASIC, que durante mucho tiempo se ha considerado un buen lenguaje para comenzar aaprender, por su sencillez, aunque se podía tender a crear programas poco legibles. A pesarde esta "sencillez" hay versiones muy potentes, incluso para programar en entornos gráficoscomo Windows.•COBOL, que fue muy utilizado para negocios (para crear software de gestión, que tuvieseque manipular grandes cantidades de datos), aunque últimamente está bastante en desuso.•FORTRAN, concebido para ingeniería, operaciones matemáticas, etc. También vaquedando desplazado.•Ensamblador, muy cercano al código máquina (es un lenguaje de "bajo nivel"), perosustituye las secuencias de ceros y unos (bits) por palabras más fáciles de recordar, comoMOV, ADD, CALL o JMP.•C, uno de los mejor considerados actualmente (junto con C++ y Java, que mencionaremosa continuación), porque no es demasiado difícil de aprender y permite un grado de controldel ordenador muy alto, combinando características de lenguajes de alto y bajo nivel.Además, es muy transportable: existe un estándar, el ANSI C, lo que asegura que se puedenconvertir programas en C de un ordenador a otro o de un sistema operativo a otro conbastante menos esfuerzo que en otros lenguajes.•C++, un lenguaje desarrollado a partir de C, que permite Programación Orientada aObjetos, por lo que resulta más adecuado para proyectos de una cierta envergadura.•Java, desarrollado a su vez a partir de C++, que elimina algunos de sus inconvenientes, yha alcanzado una gran difusión gracias a su empleo en Internet.•PASCAL, el lenguaje estructurado por excelencia (ya se irá viendo qué es esto másadelante), y que en algunas versiones tiene una potencia comparable a la del lenguaje C,como es el caso de Turbo Pascal en programación para DOS y de Delphi en laprogramación para Windows. Frente al C tiene el inconveniente de que es menos portable,y la ventaja de que en el caso concreto de la programación para DOS, Turbo Pascal no tienenada que envidiar la mayoría de versiones del lenguaje C en cuanto a potencia, y ademásresulta más fácil de aprender, es muy rápido, crea ficheros EXE más pequeños, etc.,mientras que en la programación para Windows, Delphi es una muy buena herramienta paracrear aplicaciones de calidad en un tiempo razonablemente breve.
  4. 4. 3.1.- Captura Y Edición Del ProgramaSe puede crear un archivo que contenga el programa completo, como en los ejemplos quesetienen más adelante. Se puede usar cualquier editor de textos ordinario con el que seestéfamiliarizado. Un editor disponible en la mayoría de los sistemas UNIX es vi, y enLinux sepuede usar pico.Por convención el nombre del archivo debe terminar con ``.c por ejemplo:miprograma.cprogprueba.c. El contenido del archivo deberá obedecer la sintaxis deC.Existen muchos compiladores de C. El cc es el compilador estándar de Sun. ElcompiladorGNU de C es gcc, el cual es bastante popular y está disponible en variasplataformas.Existen también compiladores equivalentes de C++ los cuales usualmente sonnombradoscomo CC. Por ejemplo, Sun provee CC y GNU GCC. El compilador de GNU estambiéndenotado como g++.Existen otros compiladores menos comunes de C y C++. En general todos loscompiladoresmencionados operan esencialmente de la misma forma y comparten muchasopcionescomunes en la línea de opciones. Más adelante se listan y se dan ejemplos deopcionescomunes de los compiladores. Sin embargo, la mejor referencia de cadacompilador es através de las páginas en línea, del manual del sistema. Por ejemplo: mangcc.Para compilar el programa usaremos el comando gcc. El comando deberá ser seguidoporel nombre del programa en C que se quiere compilar. Un determinado númerodeopciones del compilador pueden ser indicadas también. Por el momento no haremosusode estas opciones todavía, se irán comentando algunas más esenciales.Por lo tanto, elcomando básico de compilación es: gccprograma.cDonde programa.c es el nombre delarchivo.Si hay errores obvios en el programa (tales como palabras mal escritas, caracteresnotecleados u omisiones de punto y coma), el compilador se detendrá y los reportará.Podríahaber desde luego errores lógicos que el compilador no podrá detectar. En el casoque estafuera la situación se le estará indicando a la computadora que haga lasoperacionesincorrectas.Cuando el compilador ha terminado con éxito, la versión compilada, o elejecutable, esdejado en un archivo llamado a.out, o si la opción -o es usada con elcompilador, elnombre después de -o es el nombre del programa compilado.Se recomienda yes más conveniente usar la opción -o con el nombre del archivoejecutable como se muestraa continuación: gcc -o programa programa.cEl cual pone el programa compilado en elarchivo del programaseñalado, en éste caso en programa, en vez del archivo a.out.
  5. 5. 3.2. Compilar El Programa, Depurar El Programa,Ejecutar El ProgramaOtras de las opciones de utilidad en dicho menú contextual son las de COMPILACIÓN(F9) o EJECUCIÓN (F6), a las que también se puede acceder desde la barra deherramientas a través de los símbolos correspondientes y, respectivamente. La ejecución deun programa cambia el entorno al escritorio RUNNING, en el cual están accesibles lasventanas de Entrada Salida (que actúa de terminal estándar de E/S) y ejecuciónPuede detenerse una ejecución en curso desplegando el menú contextual sobre el nombredel programa (proceso) en ejecución2. EXPLORADOROtra herramienta de utilidad es el Explorador que permite acceder de forma inmediata a losficheros fuente Java. Para acceder a un programa será necesario "montarlo" en elexplorador. Para ello se despliega el menú contextual seleccionando la opción MOUNTDIRECTORY, que nos permitirá seleccionar la carpeta (paquete, en la terminología OO)que deseamos montarEsta operación es lo que Forte denomina "montar un FileSystem". Pulsando en el símbolose pueden desplegar y replegar los árboles de carpetas, de forma similar al Explorador deWindows. Para construir un nuevo programa (una nueva clase, en terminología OO), bastacon desplegar el menú contextual dentro de la carpeta correspondiente: seleccionando laopción MAIN en la última de las ventanas. De este modo se abre el asistente de edición declases donde, tras introducir el nombre de la misma (que será el nombre de nuestroprograma y del fichero que lo contiene). Y pulsar el botón FINISH se abrirá el editor deprogramas con una clase vacía con su correspondiente método principal (función main):A media que se vayan construyendo nuevos programas dentro de la carpeta el árbol en elExplorador irá adquiriendo un aspecto que nos proporciona una vía alternativa para editarlos programas (Doble clic), compilarlos, ejecutarlos, borrarlos, cambiarles el nombre (menúcontextual),... Una tarea de especial interés en la de COPIAR+PEGAR oCORTAR+PEGAR una clase/programa desde una carpeta/paquete de origen a otracarpeta/paquete de destino. Esto puede hacerse también a través del menú contextual o conlos botones correspondientes.Los detalles de mayor relevancia sobre la confección de programas Java tienen que ver conalguno de los siguientes aspectos:3.1 Uso de bibliotecas de clases
  6. 6. En los programas utilizaremos normalmente funciones o clases que están predefinidas enalguna de las bibliotecas que constituyen el lenguaje Java. Para poder utilizarlas esnecesario importar la biblioteca correspondiente, de modo que el intérprete añada al códigocompilado de nuestro programa el código correspondiente a dichas funciones o clases. Estaimportación se realiza con la sentencia import, que se utiliza ANTES de la sentencia declase de nuestro programa (línea 14 del siguiente ejemplo)En ese caso estamos indicando que se importen todas las clases correspondientes al paquetejava.io.3.2 ExcepcionesAlgunas de estas funciones pueden generar excepciones, que nosotros no trataremos deforma individualizada, sino que propagaremos directamente hacia el exterior de nuestroprograma. Para ello usaremos la sentencia throws (línea 24 del ejemplo anterior) indicandoa continuación qué excepción o excepciones queremos propagar. En el caso del ejemplo, setrata de la excepción de E/S IOException, que puede venir generada por la sentencia delectura de la línea 31. En Java es OBLIGATORIO tratar o propagar las excepciones, por loque tendremos que incluir líneas semejantes cuando usemos métodos que puedan generarexcepciones (esto está completamente documentado en la API correspondiente).3.3 Uso de otras clases no pertenecientes a la APIEn múltiples ocasiones utilizaremos alguna clase que no está incluida en la API (porejemplo, la clase TextReader, para E/S por teclado o fichero) y que será necesario"importar" a nuestro programa. La forma más trivial de hacerlo es copiando dicha clase enla misma carpeta donde se encuentra nuestro programa. Así, en el siguiente ejemplo,cualquiera de los programas del paquete/carpeta vectoresmatrices puede hacer uso de laclase TextReader. (Ver el ejemplo anterior del programa nif11, donde se usa la claseTextReader en la línea 26, y no se incluye ninguna sentencia de importación específica).Podemos tener todas las clases de uso frecuente en una carpeta separada y hacer uso de lasmismas sin necesidad de tener copia en cada una de las carpetas. Siguiendo el ejemploanterior, sería la situación en que no tuviésemos la clase TextReader en el paquete/carpetavectoresmatrices, sino, por ejemplo en otro llamado misClases (siempre dentro del mismoFileSystem).Para poder utilizar correctamente ahora la clase TextReader en el programa nif11 deberáincluirse una sentencia import que indique la trayectoria dónde se encuentra guardada dichaclase. Esta trayectoria siempre será relativa al FileSystem, por lo que en este caso bastarácon indicar una nueva línea 15 con dicha trayectoria (el símbolo * indica que se importentodas las clases del paquete misClases, pero podría especificarse únicamentemisClases.TextReader). Esto mismo puede realizarse, como es lógico, con las clases que
  7. 7. vayamos construyendo nosotros mismos. Podéis ver un ejemplo (un poco más complejo) deesta situación en el paquete modular de las soluciones de los ejercicios.4. HERRAMIENTAS DE DEPURACIÓNLas herramientas de depuración se utilizan para detectar la/s sentencia/s en donde se hanproducido errores en el diseño de un algoritmo. La tarea de depuración consistebásicamente en explorar el algoritmo, ejecutándolo paso a paso y comparando en todomomento los valores que van tomando las distintas variables con los valores esperados. Esnecesario, por tanto, haber analizado con anterioridad algunos casos de prueba quepermitan anticipar en todo momento los valores que deben tomar las variables y saber si laprogresión del algoritmo es correcta o no. Normalmente la depuración se realizará ante lapresencia de errores de ejecución o lógicos, ya que los de sintaxis suelen ir acompañados dealgún tipo de mensaje que facilita su localización. Los botones relacionados con ladepuración son los siguientes (acercando el ratón a cada uno de ellos puedes ver la etiquetacon el nombre que le asocia Sun Forte)El inicio de la depuración de un programa se realiza mediante el botón de INICIO (StepInto, F7) , que compilará el programa e iniciará su ejecución deteniéndose en la primerasentencia del programa.1 La detención se indica mediante un sombreado de color azul en laventana de edición:Conviene indicar que la sentencia sombreada todavía NO SE HA EJECUTADO, sin o queserá la siguiente en ejecutarse. Además, el entorno se habrá trasladado al escritorio dedepuración (Debugging)4.1 PASO SIMPLELa forma habitual de ejecutar el programa sentencia a sentencia será pulsando el botónSTEP OVER (F8). A cada pulsación del botón, el flujo del programa algoritmo avanza unasentencia. El símbolo de la sentencia que se va a ejecutar en cada momento es destacado encolor azul. En cualquier momento puede pararse la ejecución paso a paso pulsando el botónFINISH (Mayúsculas+F5)Ejercicio Ejecutar paso a paso el programa hasta la sentenciaimporte=teclado.readFloat();Inclusive. En el momento que ejecutamos una sentencia deEntrada/Salida, la información correspondiente aparece en la ventana de Salida: a lo cual seresponderá de la manera habitual. Ejercicio Introducid el valor 123.45, y seguid ejecutandopaso a paso el programa hasta la sentencia importe-=billetemoneda[i]*euros[i]; inclusive.4.2 VENTANA DE DEPURACIÓN
  8. 8. Observaréis que las variables que han sido definidas en el programa, junto con sus valoresaparecen en la Ventana de DEPURACIÓN, si hemos seleccionado en la parte Inferior lasolapa VARIABLES. En nuestro ejemplo, los valores deben ser los siguientes:Podéis observar cómo los valores son correctos. Para el caso de vectores comobilletemoneda o euros, se pueden visualizar todas sus componentes pulsando en el símbolo,que permite desplegarlas y replegarlas a conveniencia. Ejercicio Completad la ejecuciónpaso a paso, fijándoos en los valores de las variables i, importe y billetemoneda[i], quedeterminan el número de veces que se ejecuta el lazo y el cumplimiento o no de lasentencia de selección.Para visualizar sólo algunas de las variables, o bien expresiones se utiliza la solapaWATCHES. Para introducir una expresión se activa el siguiente menú contextual sobre lapalabra WATCHES, y seleccionamos la opción ADD WATCH. En el cuadro de diálogocorrespondiente se escribe la expresión que deseamos evaluar.Ejercicio Ejecutad paso a paso nuevamente el programa evaluando las variables i, importe ybilletemoneda[i] en el apartado WATCHES de la ventana de depuración.Para eliminar una expresión que no nos interesa ya evaluar basta con seleccionarla y pulsarel botón SUPRIMIR, o hacerlo con el menú contextual de dicha expresión. Tambiénpueden modificarse las expresiones sin más que seleccionarlas y cambiarlas en la partederecha de la ventana, en el botón NAME OF VARIABLESi deseamos modificar su valor, pulsaremos el botón VALUE.4.3 OTRAS FORMAS DE VISUALIZACIÓN DE VARIABLESExiste otra alternativa para ver rápidamente el valor de una variable: basta con acercar (SINPULSAR) el cursor al nombre de dicha variable, y automáticamente aparecerá una etiquetaque indica el tipo de variable y su valor (es decir, la misma información que aparece en laventana de depuración VARIABLES.4.4 EJECUCIÓN NORMAL DE CONJUNTOS DE SENTENCIASEsta posibilidad es útil cuando se sabe con certeza que una parte del algoritmo estácorrectamente diseñada y por tanto, la ejecución paso a paso de dicha parte no es necesaria.Consiste en ejecutar las sentencias que se suponen correctas de la forma habitual, paradetener la ejecución del programa en las sentencias donde suponemos que se encuentra elerror.4.4.1 Puntos de rupturaPueden establecerse PUNTOS DE RUPTURA (breakpoints) en las sentencias delalgoritmo, de modo que el programa se ejecutará con normalidad hasta dicho punto, y a
  9. 9. partir de ahí puede realizarse alguna de las siguientes posibilidades: retomarse la ejecuciónnormal • seguir paso a paso • establecer un punto de ruptura en una sentencia posterior delalgoritmo y continuar hasta él El punto de ruptura se fija antes del inicio de la ejecuciónmediante el botón TOGGLE BREAKPOINT , situando previamente el cursor en la líneadonde queremos fijar el punto de ruptura, que quedará resaltada en rojo:Para realizar la ejecución hasta el punto de ruptura se utiliza el botón INICIO DEDEPURACIÓN (F5) en lugar del habitual de ejecución F6. Una vez detenido el programaen el punto correspondiente puede reanudarse la ejecución hasta un punto de rupturaposterior o hasta el final del algoritmo pulsando CONTINUE (F5). Ejercicio Establecer unpunto de ruptura en la sentencia indicada anteriormente y ejecutar el programa desde esepunto. A continuación fijar otro punto de ruptura en el último if, ejecutar hasta dicho , pasoa paso, siguiendo un par hasta eble del algoritmo de resta de dos matrices, y continuar pasoa paso a partir de ahí.Cabe señalar que los puntos de ruptura pueden añadirse o quitarse a voluntad durante elproceso de depuración.4.4.2 Ejecución hasta el cursorOtra alternativa, que en ocasiones puede resultar más cómoda que los puntos de ruptura,consiste en situar el cursor en un punto del programa y ejecutarlo con normalidad elprograma hasta dicho punto. Para ello disponemos del botónEJECUTAR HASTA EL CURSOR (F4). Con ello la ejecución del programa se detiene endicho punto, pudiéndose proseguir a partir de ahí de cualquiera de las formas conocidas(una nueva ejecución hasta otra posición del cursor, paso a paso, fijando puntos deruptura,...)

×