Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Unidad 3

337 visualizaciones

Publicado el

  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Unidad 3

  1. 1. Unidad 3APLICAR LOSPRINCIPIOS DEPROGRAMACIÓN EN LASOLUCION DEPROBLEMASRafael Carlos ZavaletaInformática 4°A
  2. 2. 3.- Poner A Punto El Programa Mediante El Uso De Un Editor DeLenguaje De Programación Estructurado.Hay distintos lenguajes que nos permiten dar instrucciones a un ordenador (unprograma de ordenador es básicamente eso: un conjunto de órdenes para unordenador).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 esmuy poco intuitivo para nosotros, y difícil de usar. Por ello se recurre a otroslenguajes más avanzados, más cercanos al propio lenguaje humano (lenguajes dealto nivel), y es entonces el mismo ordenador el que se encarga de convertirlo aalgo que pueda manejar directamente.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 convirtiendoa código máquina antes de ejecutarla, lo que hace que sean más lentos (a cambio,los intérpretes suelen ser más fáciles de crear, lo que permite que sean baratos yque puedan funcionar en ordenadores con menor potencia).2. En los compiladores, se convierte todo el programa en bloque a código máquinay después se ejecuta. Así, hay que esperar más que en un intérprete paracomenzar a ver trabajar el programa, pero después éste funciona mucho másrápido (a cambio, los compiladores son más caros y suelen requerir ordenadoresmás potentes).Hay lenguajes para los que sólo hay disponibles intérpretes, otros para los quesólo existen compiladores, y otros en los que se puede elegir entre ambos. Lamayoría de los lenguajes actuales son compilados, y el entorno de desarrollosuele 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".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 paracomenzar a aprender, por su sencillez, aunque se podía tender a crear programaspoco legibles. A pesar de esta "sencillez" hay versiones muy potentes, inclusopara programar en entornos gráficos comoWindows.•COBOL, que fue muy utilizado para negocios(para crear software de gestión, que tuviese quemanipular grandes cantidades de datos),aunque últimamente está bastante en desuso.•FORTRAN, concebido para ingeniería,operaciones matemáticas, etc. También vaquedando desplazado.•C, uno de los mejor considerados actualmente(junto con C++ y Java, que mencionaremos acontinuación), porque no es demasiado difícil de aprender y permite un grado decontrol del ordenador muy alto, combinando características de lenguajes de alto ybajo nivel. Además, es muy transportable: existe un estándar, el ANSI C, lo queasegura que se pueden convertir programas en C de un ordenador a otro o de unsistema operativo a otro con bastante menos esfuerzo que en otros lenguajes.•C++, un lenguaje desarrollado a partir de C, que permite Programación Orientadaa Objetos, por lo que resulta más adecuado para proyectos de una ciertaenvergadura.•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 en Internet.•PASCAL, el lenguaje estructurado por excelencia, y que en algunas versionestiene una potencia comparable a la del lenguaje C, como es el caso de TurboPascal en programació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 de queen el caso concreto de la programación para DOS, Turbo Pascal no tiene nadaque envidiar la mayoría de versiones del lenguaje C en cuanto a potencia, yademás resulta más fácil de aprender, es muy rápido, crea ficheros EXE máspequeños, etc., mientras que en la programación para Windows, Delphi es unamuy buena herramienta para crear aplicaciones de calidad en un tiemporazonablemente breve.
  4. 4. 3.1.- Captura Y Edición Del ProgramaSe puede crear un archivo que contenga el programa completo, como en losejemplos que se tienen más adelante. Se puede usar cualquier editor de textosordinario con el que se esté familiarizado. Un editor disponible en la mayoría delos sistemas UNIX es vi, y en Linux se puede usar pico. Por convención el nombredel archivo debe terminar con ``.c por ejemplo: miprograma.cprogprueba.c. Elcontenido del archivo deberá obedecer la sintaxis de C.Existen muchoscompiladores de C. El cc es el compilador estándar de Sun. El compiladorGNU deC es gcc, el cual es bastante popular y está disponible en variasplataformas.Existen también compiladores equivalentes de C++ los cualesusualmente son nombradoscomo CC. Por ejemplo, Sun provee CC y GNU GCC.El compilador de GNU es tambiéndenotado como g++.Existen otros compiladores menos comunes de C y C++. En general todos loscompiladoresmencionados operan esencialmente de la misma forma y compartenmuchas opcionescomunes en la línea de opciones. Más adelante se listan y sedan ejemplos de opcionescomunes de los compiladores. Sin embargo, la mejorreferencia de cada compilador es através de las páginas en línea, del manual delsistema. Por ejemplo: man gcc.Para compilar el programa usaremos el comandogcc. El comando deberá ser seguido porel nombre del programa en C que sequiere compilar. Un determinado número deopciones del compilador pueden serindicadas también. Por el momento no haremos usode estas opciones todavía, seirán comentando algunas más esenciales.Por lo tanto, el comando básico decompilación es: gccprograma.cDonde programa.c es el nombre del archivo.Si hayerrores obvios 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 no podrádetectar. En el casoque esta fuera la situación se le estará indicando a lacomputadora que haga lasoperaciones incorrectas.Cuando el compilador haterminado con éxito, la versión compilada, o el ejecutable, esdejado en un archivollamado a.out, o si la opción -o es usada con el compilador, elnombre después de -o es el nombre del programa compilado.Se recomienda y es más conveniente usarla opción -o con el nombre del archivoejecutable como se muestra a continuación:gcc -o programa programa.cEl cual pone el programa compilado en el archivo delprogramaseñalado, en éste caso en programa, en vez del archivo a.out.
  5. 5. 3.2. Compilar El Programa, Depurar El Programa, Ejecutar ElProgramaOtras 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 al escritorioRUNNING, en el cual están accesibles las ventanas de Entrada Salida (que actúade terminal estándar de E/S) y ejecuciónPuede detenerse una ejecución en curso desplegando el menú contextual sobre elnombre 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ú contextualseleccionando la opción MOUNT DIRECTORY, que nos permitirá seleccionar lacarpeta (paquete, en la terminología OO) que deseamos montarEsta operación es lo que Forte denomina "montar un FileSystem". Pulsando en elsímbolo se pueden desplegar y replegar los árboles de carpetas, de forma similaral Explorador de Windows. Para construir un nuevo programa (una nueva clase,en terminología OO), basta con desplegar el menú contextual dentro de la carpetacorrespondiente: seleccionando la opción MAIN en la última de las ventanas. Deeste modo se abre el asistente de edición de clases donde, tras introducir elnombre de la misma (que será el nombre de nuestro programa y del fichero que locontiene). Y pulsar el botón FINISH se abrirá el editor de programas con una clasevacía con su correspondiente método principal (función main):
  6. 6. A media que se vayan construyendo nuevos programas dentro de la carpeta elárbol en el Explorador irá adquiriendo un aspecto que nos proporciona una víaalternativa para editar los programas (Doble clic), compilarlos, ejecutarlos,borrarlos, cambiarles el nombre (menú contextual),... Una tarea de especial interésen la de COPIAR+PEGAR o CORTAR+PEGAR una clase/programa desde unacarpeta/paquete de origen a otra carpeta/paquete de destino. Esto puede hacersetambién a través del menú contextual o con los botones correspondientes.Los detalles de mayor relevancia sobre la confección de programas Java tienenque 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. Parapoder utilizarlas es necesario importar la biblioteca correspondiente, de modo queel intérprete añada al código compilado de nuestro programa el códigocorrespondiente a dichas funciones o clases. Esta importación se realiza con lasentencia import, que se utiliza antes de la sentencia de clase de nuestroprograma.3.2 ExcepcionesAlgunas de estas funciones pueden generar excepciones, que nosotros notrataremos de forma individualizada, sino que propagaremos directamente hacia elexterior de nuestro programa. Para ello usaremos la sentencia throws (línea 24 delejemplo anterior) indicando a continuación qué excepción o excepcionesqueremos propagar. En el caso del ejemplo, se trata de la excepción de E/SIOException, que puede venir generada por la sentencia de lectura de la línea 31.En Java es OBLIGATORIO tratar o propagar las excepciones, por lo quetendremos que incluir líneas semejantes cuando usemos métodos que puedangenerar excepciones (esto está completamente documentado en la APIcorrespondiente).3.3 Uso de otras clases no pertenecientes a la APIEn múltiples ocasiones utilizaremos alguna clase que no está incluida en la API yque será necesario "importar" a nuestro programa. La forma más trivial de hacerloes copiando dicha clase en la misma carpeta donde se encuentra nuestroprograma. Así, en el siguiente ejemplo, cualquiera de los programas delpaquete/carpeta vectoresmatrices puede hacer uso de la clase TextReader. (Verel ejemplo anterior del programa nif11, donde se usa la clase TextReader en lalínea 26, y no se incluye ninguna sentencia de importación específica).
  7. 7. Podemos tener todas las clases de uso frecuente en una carpeta separada yhacer uso de las mismas sin necesidad de tener copia en cada una de lascarpetas. Siguiendo el ejemplo anterior, sería la situación en que no tuviésemos laclase TextReader en el paquete/carpeta vectoresmatrices, sino, por ejemplo enotro llamado misClases (siempre dentro del mismo FileSystem).Para poder utilizar correctamente ahora la clase TextReader en el programa nif11deberá incluirse una sentencia import que indique la trayectoria dónde seencuentra guardada dicha clase. Esta trayectoria siempre será relativa alFileSystem, por lo que en este caso bastará con indicar una nueva línea 15 condicha trayectoria (el símbolo * indica que se importen todas las clases del paquetemisClases, pero podría especificarse únicamente misClases.TextReader). Estomismo puede realizarse, como es lógico, con las clases que vayamosconstruyendo 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 dedepuración se utilizan paradetectar la/s sentencia/s endonde se han producidoerrores en el diseño de unalgoritmo. La tarea dedepuración consistebásicamente en explorar elalgoritmo, ejecutándolo pasoa paso y comparando en todo momento los valores que van tomando las distintasvariables con los valores esperados. Es necesario, por tanto, haber analizado conanterioridad algunos casos de prueba que permitan anticipar en todo momento losvalores que deben tomar las variables y saber si la progresión del algoritmo escorrecta o no. Normalmente la depuración se realizará ante la presencia deerrores 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 verla etiqueta con el nombre que le asocia Sun Forte)El inicio de la depuración de un programa se realiza mediante el botón de INICIO(Step Into, F7) , que compilará el programa e iniciará su ejecución deteniéndoseen la primera sentencia del programa.1 La detención se indica mediante unsombreado de color azul en la ventana de edición:
  8. 8. Conviene indicar que la sentencia sombreada todavía NO SE HA EJECUTADO,sin o que será la siguiente en ejecutarse. Además, el entorno se habrá trasladadoal escritorio de depuración (Debugging)4.1 PASO SIMPLELa forma habitual de ejecutar el programa sentencia a sentencia será pulsando elbotón STEP OVER (F8). A cada pulsación del botón, el flujo del programaalgoritmo avanza una sentencia. El símbolo de la sentencia que se va a ejecutaren cada momento es destacado en color azul. En cualquier momento puedepararse la ejecución paso a paso pulsando el botón FINISH (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 programa hasta lasentencia importe-=billetemoneda[i]*euros[i]; inclusive.4.2 VENTANA DE DEPURACIÓNObservaréis que las variables que han sido definidas en el programa, junto consus valores aparecen en la Ventana de DEPURACIÓN, si hemos seleccionado enla parte Inferior la solapa VARIABLES. En nuestro ejemplo, los valores deben serlos 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 enel símbolo, que permite desplegarlas y replegarlas a conveniencia. EjercicioCompletad la ejecución paso a paso, fijándoos en los valores de las variables i,importe y billetemoneda[i], que determinan el número de veces que se ejecuta ellazo y el cumplimiento o no de la sentencia 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 WATCH.En el cuadro de diálogo correspondiente se escribe la expresión que deseamosevaluar.Ejercicio Ejecutad paso a paso nuevamente el programa evaluando las variables i,importe y billetemoneda[i] en el apartado WATCHES de la ventana 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ú contextual dedicha expresión. También pueden modificarse las expresiones sin más que
  9. 9. seleccionarlas y cambiarlas en la parte derecha de la ventana, en el botón NAMEOF VARIABLE. Si 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 conacercar (SIN PULSAR) el cursor al nombre de dicha variable, y automáticamenteaparecerá una etiqueta que indica el tipo de variable y su valor (es decir, la mismainformación que aparece en la ventana 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 algoritmoestá correctamente diseñada y por tanto, la ejecución paso a paso de dicha parteno es necesaria. Consiste en ejecutar las sentencias que se suponen correctas dela forma habitual, para detener la ejecución del programa en las sentencias dondesuponemos que se encuentra el error.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 dichopunto, y a partir de ahí puede realizarse alguna de las siguientes posibilidades:retomarse la ejecución normal • seguir paso a paso • establecer un punto deruptura en una sentencia posterior del algoritmo y continuar hasta él El punto deruptura se fija antes del inicio de la ejecución mediante el botón TOGGLEBREAKPOINT , situando previamente el cursor en la línea donde queremos fijar elpunto 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 elprograma en el punto correspondiente puede reanudarse la ejecución hasta unpunto de ruptura posterior o hasta el final del algoritmo pulsando CONTINUE (F5).Ejercicio Establecer un punto de ruptura en la sentencia indicada anteriormente yejecutar el programa desde ese punto. A continuación fijar otro punto de rupturaen el último if, ejecutar hasta dicho , paso a paso, siguiendo un par hasta eble delalgoritmo de resta de dos matrices, y continuar paso a paso a partir de ahí.Cabe señalar que los puntos de ruptura pueden añadirse o quitarse a voluntaddurante el proceso de depuración.
  10. 10. 4.4.2 Ejecución hasta el cursorOtra alternativa, que en ocasiones puede resultar más cómoda que los puntos deruptura, consiste en situar el cursor en un punto del programa y ejecutarlo connormalidad el programa hasta dicho punto. Para ello disponemos 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 cualquiera de lasformas conocidas (una nueva ejecución hasta otra posición del cursor, paso apaso, fijando puntos de ruptura,...)

×