Your SlideShare is downloading. ×
Unidad 3
Unidad 3
Unidad 3
Unidad 3
Unidad 3
Unidad 3
Unidad 3
Unidad 3
Unidad 3
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
39
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 3.- Poner A Punto El Programa Mediante El Uso De Un Editor De Lenguaje DeProgramación Estructurado.Hay distintos lenguajes que nos permiten dar instrucciones a un ordenador(un programa de ordenador es básicamente eso: un conjunto de órdenespara un ordenador).El lenguaje más directo es el propio del ordenador, llamado "lenguaje demáquina" o "código máquina", formado por secuencias de ceros y unos.Este lenguaje es muy poco intuitivo para nosotros, y difícil de usar. Por ellose recurre a otros lenguajes más avanzados, más cercanos al propiolenguaje humano (lenguajes de alto nivel), y es entonces el mismoordenador el que se encarga de convertirlo a algo que pueda manejardirectamente.Se puede distinguir dos tipos de lenguajes, según se realice estaconversión:1. En los intérpretes, cada instrucción que contiene el programa se vaconvirtiendo a código máquina antes de ejecutarla, lo que hace que seanmás lentos (a cambio, los intérpretes suelen ser más fáciles de crear, lo quepermite que sean baratos y que puedan funcionar en ordenadores conmenor potencia).2. En los compiladores, se convierte todo el programa en bloque a códigomáquina y después se ejecuta. Así, hay que esperar más que en unintérprete para comenzar a ver trabajar el programa, pero después éstefunciona mucho más rápido (a cambio, los compiladores son más caros ysuelen requerir ordenadores más potentes).Hay lenguajes para los que sólo hay disponibles intérpretes, otros para losque sólo existen compiladores, y otros en los que se puede elegir entreambos. La mayoría de los lenguajes actuales son compilados, y el entornode 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 distintossubprogramas, y depuradores (debuggers) para ayudar a descubrir errores.Es cada vez más frecuente que todos estos pasos se puedan dar desde unúnico "entorno integrado".
  • 2. Por ejemplo, el entorno de Turbo Pascal tiene la siguiente apariencia:Algunos de los lenguajes más difundidos son:•BASIC, que durante mucho tiempo se ha considerado un buen lenguaje paracomenzar a aprender, por su sencillez, aunque se podía tender a crearprogramas poco legibles. A pesar de esta "sencillez" hay versiones muypotentes, incluso para programar en entornos gráficos como Windows.•COBOL, que fue muy utilizado para negocios (para crear software degestión, que tuviese que manipular grandes cantidades de datos), aunqueúltimamente está bastante en desuso.•FORTRAN, concebido para ingeniería, operaciones matemáticas, etc.También va quedando desplazado.•Ensamblador, muy cercano al código máquina (es un lenguaje de "bajonivel"), pero sustituye las secuencias de ceros y unos (bits) por palabrasmás fáciles de recordar, como MOV, ADD, CALL o JMP.•C, uno de los mejor considerados actualmente (junto con C++ y Java, quemencionaremos a continuación), porque no es demasiado difícil de aprendery permite un grado de control del ordenador muy alto, combinandocaracterísticas de lenguajes de alto y bajo nivel. Además, es muytransportable: 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 operativoa otro con bastante menos esfuerzo que en otros lenguajes.•C++, un lenguaje desarrollado a partir de C, que permite ProgramaciónOrientada a Objetos, por lo que resulta más adecuado para proyectos de unacierta envergadura.•Java, desarrollado a su vez a partir de C++, que elimina algunos de susinconvenientes, y ha alcanzado una gran difusión gracias a su empleo enInternet.•PASCAL, el lenguaje estructurado por excelencia (ya se irá viendo qué esesto más adelante), y que en algunas versiones tiene una potenciacomparable a la del lenguaje C, como es el caso de Turbo Pascal enprogramación para DOS y de Delphi en la programación para Windows.Frente al C tiene el inconveniente de que es menos portable, y la ventaja deque en el caso concreto de la programación para DOS, Turbo Pascal no tiene
  • 3. nada que envidiar la mayoría de versiones del lenguaje C en cuanto apotencia, y además resulta más fácil de aprender, es muy rápido, creaficheros EXE más pequeños, etc., mientras que en la programación paraWindows, Delphi es una muy buena herramienta para crear aplicaciones decalidad en un tiempo razonablemente breve.3.1.- Captura Y Edición Del ProgramaSe puede crear un archivo que contenga el programa completo, como en losejemplos quese tienen más adelante. Se puede usar cualquier editor detextos ordinario con el que seesté familiarizado. Un editor disponible en lamayoría de los sistemas UNIX es vi, y enLinux se puede usar pico.Porconvención el nombre del archivo debe terminar con ``.c por ejemplo:miprograma.cprogprueba.c. El contenido del archivo deberá obedecer lasintaxis de C.Existen muchos compiladores de C. El cc es el compiladorestándar de Sun. El compiladorGNU de C es gcc, el cual es bastante populary está disponible en varias plataformas.Existen también compiladoresequivalentes de C++ los cuales usualmente son nombradoscomo CC. Porejemplo, 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 todoslos compiladoresmencionados operan esencialmente de la misma forma ycomparten muchas opcionescomunes en la línea de opciones. Más adelantese listan y se dan ejemplos de opcionescomunes de los compiladores. Sinembargo, la mejor referencia de cada compilador es através de las páginasen línea, del manual del sistema. Por ejemplo: man gcc.Para compilar elprograma usaremos el comando gcc. El comando deberá ser seguido porelnombre del programa en C que se quiere compilar. Un determinado númerodeopciones del compilador pueden ser indicadas también. Por el momentono haremos usode estas opciones todavía, se irán comentando algunas másesenciales.Por lo tanto, el comando básico de compilación es:gccprograma.cDonde programa.c es el nombre del archivo.Si hay erroresobvios en el programa (tales como palabras mal escritas, caracteresnotecleados u omisiones de punto y coma), el compilador se detendrá y losreportará.Podría haber desde luego errores lógicos que el compilador nopodrá detectar. En el casoque esta fuera la situación se le estará indicando a
  • 4. la computadora que haga lasoperaciones incorrectas.Cuando el compiladorha terminado con éxito, la versión compilada, o el ejecutable, esdejado en unarchivo llamado a.out, o si la opción -o es usada con el compilador,elnombre después de -o es el nombre del programa compilado.Serecomienda y es más conveniente usar la opción -o con el nombre delarchivoejecutable como se muestra a continuación: gcc -o programaprograma.cEl cual pone el programa compilado en el archivo delprogramaseñalado, en éste caso en programa, en vez del archivo a.out.3.2. Compilar El Programa, Depurar El Programa, Ejecutar El ProgramaOtras de las opciones de utilidad en dicho menú contextual son las deCOMPILACIÓN (F9) o EJECUCIÓN (F6), a las que también se puede accederdesde la barra de herramientas a través de los símbolos correspondientes y,respectivamente. La ejecución de un programa cambia el entorno alescritorio RUNNING, en el cual están accesibles las ventanas de EntradaSalida (que actúa de terminal estándar de E/S) y ejecuciónPuede detenerse una ejecución en curso desplegando el menú contextualsobre el nombre del programa (proceso) en ejecución2. EXPLORADOROtra herramienta de utilidad es el Explorador que permite acceder de formainmediata a los ficheros fuente Java. Para acceder a un programa seránecesario "montarlo" en el explorador. Para ello se despliega el menúcontextual seleccionando la opción MOUNT DIRECTORY, que nos permitiráseleccionar la carpeta (paquete, en la terminología OO) que deseamosmontarEsta operación es lo que Forte denomina "montar un FileSystem". Pulsandoen el símbolo se pueden desplegar y replegar los árboles de carpetas, deforma similar al Explorador de Windows. Para construir un nuevo programa(una nueva clase, en terminología OO), basta con desplegar el menúcontextual dentro de la carpeta correspondiente: seleccionando la opciónMAIN en la última de las ventanas. De este modo se abre el asistente deedición de clases donde, tras introducir el nombre de la misma (que será elnombre de nuestro programa y del fichero que lo contiene). Y pulsar el botón
  • 5. FINISH se abrirá el editor de programas con una clase vacía con sucorrespondiente método principal (función main):A media que se vayan construyendo nuevos programas dentro de la carpetael árbol en el Explorador irá adquiriendo un aspecto que nos proporcionauna vía alternativa para editar los programas (Doble clic), compilarlos,ejecutarlos, borrarlos, cambiarles el nombre (menú contextual),... Una tareade especial interés en la de COPIAR+PEGAR o CORTAR+PEGAR unaclase/programa desde una carpeta/paquete de origen a otra carpeta/paquetede 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 Javatienen que ver con alguno de los siguientes aspectos:3.1 Uso de bibliotecas de clasesEn los programas utilizaremos normalmente funciones o clases que estánpredefinidas en alguna de las bibliotecas que constituyen el lenguaje Java.Para poder utilizarlas es necesario importar la biblioteca correspondiente, demodo que el intérprete añada al código compilado de nuestro programa elcódigo correspondiente a dichas funciones o clases. Esta importación serealiza con la sentencia import, que se utiliza ANTES de la sentencia de clasede nuestro programa (línea 14 del siguiente ejemplo)En ese caso estamos indicando que se importen todas las clasescorrespondientes al paquete java.io.3.2 ExcepcionesAlgunas de estas funciones pueden generar excepciones, que nosotros notrataremos de forma individualizada, sino que propagaremos directamentehacia el exterior de nuestro programa. Para ello usaremos la sentenciathrows (línea 24 del ejemplo anterior) indicando a 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 lasentencia de lectura de la línea 31. En Java es OBLIGATORIO tratar opropagar las excepciones, por lo que tendremos que incluir líneassemejantes cuando usemos métodos que puedan generar excepciones (estoestá completamente documentado en la API correspondiente).3.3 Uso de otras clases no pertenecientes a la API
  • 6. En múltiples ocasiones utilizaremos alguna clase que no está incluida en laAPI (por ejemplo, la clase TextReader, para E/S por teclado o fichero) y queserá necesario "importar" a nuestro programa. La forma más trivial dehacerlo es copiando dicha clase en la misma carpeta donde se encuentranuestro programa. Así, en el siguiente ejemplo, cualquiera de los programasdel paquete/carpeta vectoresmatrices puede hacer uso de la claseTextReader. (Ver el ejemplo anterior del programa nif11, donde se usa laclase TextReader en la línea 26, y no se incluye ninguna sentencia deimportación específica). Podemos tener todas las clases de uso frecuente enuna carpeta separada y hacer uso de las mismas sin necesidad de tenercopia en cada una de las carpetas. Siguiendo el ejemplo anterior, sería lasituación en que no tuviésemos la clase TextReader en el paquete/carpetavectoresmatrices, sino, por ejemplo en otro llamado misClases (siempredentro del mismo FileSystem).Para poder utilizar correctamente ahora la clase TextReader en el programanif11 deberá incluirse una sentencia import que indique la trayectoria dóndese encuentra guardada dicha clase. Esta trayectoria siempre será relativa alFileSystem, por lo que en este caso bastará con indicar una nueva línea 15con dicha trayectoria (el símbolo * indica que se importen todas las clasesdel paquete misClases, pero podría especificarse únicamentemisClases.TextReader). Esto mismo puede realizarse, como es lógico, conlas clases que vayamos construyendo nosotros mismos. Podéis ver unejemplo (un poco más complejo) de esta situación en el paquete modular delas soluciones de los ejercicios.4. HERRAMIENTAS DE DEPURACIÓNLas herramientas de depuración se utilizan para detectar la/s sentencia/s endonde se han producido errores en el diseño de un algoritmo. La tarea dedepuración consiste básicamente en explorar el algoritmo, ejecutándolopaso a paso y comparando en todo momento los valores que van tomandolas distintas variables con los valores esperados. Es necesario, por tanto,haber analizado con anterioridad algunos casos de prueba que permitananticipar en todo momento los valores que deben tomar las variables y sabersi la progresión del algoritmo es correcta o no. Normalmente la depuraciónse realizará ante la presencia de errores de ejecución o lógicos, ya que losde sintaxis suelen ir acompañados de algún tipo de mensaje que facilita sulocalización. Los botones relacionados con la depuración son los siguientes(acercando el ratón a cada uno de ellos puedes ver la etiqueta con el nombreque le asocia Sun Forte)
  • 7. El inicio de la depuración de un programa se realiza mediante el botón deINICIO (Step Into, F7) , que compilará el programa e iniciará su ejecucióndeteniéndose en la primera sentencia del programa.1 La detención se indicamediante un sombreado de color azul en la ventana de edición:Conviene indicar que la sentencia sombreada todavía NO SE HAEJECUTADO, sin o que será la siguiente en ejecutarse. Además, el entornose habrá trasladado al escritorio de depuración (Debugging)4.1 PASO SIMPLELa forma habitual de ejecutar el programa sentencia a sentencia serápulsando el botón STEP OVER (F8). A cada pulsación del botón, el flujo delprograma algoritmo avanza una sentencia. El símbolo de la sentencia que seva a ejecutar en cada momento es destacado en color azul. En cualquiermomento 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 unasentencia de Entrada/Salida, la información correspondiente aparece en laventana de Salida: a lo cual se responderá de la manera habitual. EjercicioIntroducid el valor 123.45, y seguid ejecutando paso a paso el programahasta la sentencia importe-=billetemoneda[i]*euros[i]; inclusive.4.2 VENTANA DE DEPURACIÓNObservaréis que las variables que han sido definidas en el programa, juntocon sus valores aparecen en la Ventana de DEPURACIÓN, si hemosseleccionado en la parte Inferior la solapa VARIABLES. En nuestro ejemplo,los valores deben ser los siguientes:Podéis observar cómo los valores son correctos. Para el caso de vectorescomo billetemoneda o euros, se pueden visualizar todas sus componentespulsando en el símbolo, que permite desplegarlas y replegarlas aconveniencia. Ejercicio Completad la ejecución paso a paso, fijándoos en losvalores de las variables i, importe y billetemoneda[i], que determinan elnú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 lasolapa WATCHES. Para introducir una expresión se activa el siguiente menúcontextual sobre la palabra WATCHES, y seleccionamos la opción ADD
  • 8. WATCH. En el cuadro de diálogo correspondiente se escribe la expresiónque deseamos evaluar.Ejercicio Ejecutad paso a paso nuevamente el programa evaluando lasvariables i, importe y billetemoneda[i] en el apartado WATCHES de laventana de depuración.Para eliminar una expresión que no nos interesa ya evaluar basta conseleccionarla y pulsar el botón SUPRIMIR, o hacerlo con el menú contextualde dicha expresión. También pueden modificarse las expresiones sin másque seleccionarlas y cambiarlas en la parte derecha de la ventana, en elbotó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: bastacon acercar (SIN PULSAR) el cursor al nombre de dicha variable, yautomáticamente aparecerá una etiqueta que indica el tipo de variable y suvalor (es decir, la misma información que aparece en la ventana dedepuración VARIABLES.4.4 EJECUCIÓN NORMAL DE CONJUNTOS DE SENTENCIASEsta posibilidad es útil cuando se sabe con certeza que una parte delalgoritmo está correctamente diseñada y por tanto, la ejecución paso a pasode dicha parte no es necesaria. Consiste en ejecutar las sentencias que sesuponen correctas de la forma habitual, para detener la ejecución delprograma en las sentencias donde suponemos que se encuentra el error.4.4.1 Puntos de rupturaPueden establecerse PUNTOS DE RUPTURA (breakpoints) en las sentenciasdel algoritmo, de modo que el programa se ejecutará con normalidad hastadicho punto, y a partir de ahí puede realizarse alguna de las siguientesposibilidades: retomarse la ejecución normal • seguir paso a paso •establecer un punto de ruptura en una sentencia posterior del algoritmo ycontinuar hasta él El punto de ruptura se fija antes del inicio de la ejecuciónmediante el botón TOGGLE BREAKPOINT , situando previamente el cursoren la línea donde queremos fijar el punto de ruptura, que quedará resaltadaen rojo:
  • 9. Para realizar la ejecución hasta el punto de ruptura se utiliza el botón INICIODEDEPURACIÓN (F5) en lugar del habitual de ejecución F6. Una vez detenido elprograma en el punto correspondiente puede reanudarse la ejecución hastaun punto de ruptura posterior o hasta el final del algoritmo pulsandoCONTINUE (F5). Ejercicio Establecer un punto de ruptura en la sentenciaindicada anteriormente y ejecutar el programa desde ese punto. Acontinuación fijar otro punto de ruptura en el último if, ejecutar hasta dicho ,paso a paso, siguiendo un par hasta eble del algoritmo de resta de dosmatrices, y continuar paso a paso a partir de ahí.Cabe señalar que los puntos de ruptura pueden añadirse o quitarse avoluntad durante el proceso de depuración.4.4.2 Ejecución hasta el cursorOtra alternativa, que en ocasiones puede resultar más cómoda que lospuntos de ruptura, consiste en situar el cursor en un punto del programa yejecutarlo con normalidad el programa hasta dicho punto. Para ellodisponemos del botónEJECUTAR HASTA EL CURSOR (F4). Con ello la ejecución del programa sedetiene en dicho punto, pudiéndose proseguir a partir de ahí de cualquierade las formas conocidas (una nueva ejecución hasta otra posición delcursor, paso a paso, fijando puntos de ruptura,...)

×