Saltar la navegación

3. Sumérgete en un nuevo entorno

Rétor dice:Ya conoces las características básicas del lenguaje Python y has programado alguna aplicación en él. También, en los apartados anteriores has conocido el reto a programar en este nuevo recurso y sabes que utilizaremos, tras aprender, la POO. Pero antes de entrar de lleno en el nuevo paradigma, vamos a realizar un pequeño cambio respecto a lo utilizado hasta ahora: ¡vamos a cambiar de entorno de programación! Utilizaremos PyCharm.
En este apartado, tras reflexionar sobre la conveniencia del uso de un IDE (Entorno de Desarrollo Integrado) y comparar la herramienta que has utilizado hasta ahora para programar, conocerás la interfaz de PyCharm. Aprenderás a instalarla, configurarla y usarla. Nos basaremos en ella para la programación del reto aquí propuesto. Verás que esta nueva interfaz te dará herramientas mucho más potentes para la programación de tus aplicaciones.

1. ¿Qué tenemos? ¿Qué mejoras queremos?

Hasta ahora hemos conocido que un programa se puede realizar en cualquier documento de texto. Sólo hay que abrir un archivo, escribir el código y compilarlo (para crear un fichero ejecutable que realice la actividad que ha sido programada). Para esto último, necesitamos un compilador propio del lenguaje de programación que hayamos utilizado.

En esta actividad os propongo trabajar en grupo para dar respuesta a las siguientes cuestiones y reflexionar sobre las diferencias entre las distintas herramientas que existen para crear un programa y saber por qué elegimos utilizar unas frente a otras.

Imagen en la que aparecen enfrentados los logos de IDLE vs. PyCharm

Hasta ahora, para escribir tus programas has utilizado Python IDLE (Entorno de desarrollo y aprendizaje integrado):
- ¿Crees que es un editor de texto o un IDE? ¿Por qué?
- ¿Sabes si incluye compilador?
- En la experiencia que has tenido hasta ahora con los errores en tus programas, ¿qué formas de detectar errores te ha ofrecido Python IDLE?
- ¿Te ofrece la posibilidad de ejecutar paso a paso cada instrucción (y ver el valor de las variables) para localizar un fallo?

Buscad en Internet la información general sobre PyCharm que os indica cada pregunta:
- ¿Ofrece PyCharm depuración de errores?¿Puedes ir conociendo el valor de cada variable durante la ejecución del programa?
- Buscad información sobre estas tres características que incluye un IDE como PyCharm:

  1. Inspector de código
  2. Herramienta de depuración
  3. Docker.
  4. Explicad al grupo clase en qué consisten.

Expresadlo como prefiráis: podéis escribirlo en el cuaderno, puedes buscar imágenes por Internet y hacer una composición, hacer una presentación con diapositivas... Una vez lo tengáis presentadlo al grupo clase.

Programa que traduce código escrito en un lenguaje de programación (llamado fuente) a otro lenguaje (conocido como objeto) que suele ser un lenguaje de bajo nivel (código máquina).

Lumen dice Otras herramientas son más básicas

Recordad que existen también los editores de texto con reconocimiento de palabras del código, pero que necesitan posteriormente un compilador aparte:

Imagen con el logo de Notepad++

Un editor de texto es una aplicación que se usa para desarrollar y que ofrece una funcionalidad simple y minimalista. Suelen venir con lo básico, como resaltado de sintaxis, acceso al terminal y formato automático. Son de propósito general, por lo que suelen ser compatibles con la mayoría de lenguajes de programación. Pueden parecer como un bloc de notas (Windows) o un gedit (Linux) avanzado: un ejemplo de esto es Notepad++

En contraposición, como ya hemos visto, los IDE son un entorno de desarrollo integrado (escritura de código + compilación, errores y otras funciones extra). Generalmente, ofrecen al desarrollador multitud de herramientas de manera que no tenga que salir de la aplicación para realizar cualquier tipo de tarea involucrada con el desarrollo.

2. Identifico lo que tengo que hacer

Ya conoces qué reto te proponemos alcanzar y te acabamos de plantear una actividad que te acercará a la meta. Pero para tener éxito en tu camino, necesitarás algunas estrategias que te servirán para esta y otras tareas parecidas. Las irás descubriendo en un diario que llamamos tu Diario de Aprendizaje.
¡Te proponemos que lo abras y completes el PASO 1 (Identifico lo que tengo que hacer) del Diario de aprendizaje antes de empezar la actividad que acabas de leer!

Portada Diario de aprendizaje Secundaria

Haz clic aquí para descargar tu Diario de Aprendizaje en formato PDF.
Haz clic aquí para descargar tu Diario de Aprendizaje en formato editable ODP.


Recuerda:

  1. Pregunta a tu profesor o profesora si lo vas a rellenar en papel o en el ordenador.
  2. Si lo rellenas en el ordenador, no te olvides de guardarlo en una carpeta que más tarde puedas localizar.

¡Ánimo, que lo harás genial!

3. ¿Seré capaz de hacer la actividad?

¡Ya has empezado la actividad, “¿Qué tenemos? ¿Qué mejoras queremos?”! Cuando empezamos algo que no habíamos hecho antes podemos sentir algo de miedo e inseguridad, esto es algo muy normal.
Si completas el PASO 2 (¿Seré capaz de hacerlo?) del Diario de aprendizaje, podrás comprobar que solo con reflexionar sobre esto te ayudará a relajarte, a continuar con la actividad y completarla con éxito. También conseguirás sentir menos inseguridad cuando tengas que realizar las próximas actividades.
Recuerda:

  1. Pregunta a tu profesor o profesora si lo vas a rellenar en papel o en el ordenador.
  2. Si lo rellenas en el ordenador, no te olvides de guardarlo en una carpeta que más tarde puedas localizar.

¡Ánimo, que lo harás genial!

4. ¡Quiero el mejor equipo!

Acabais de conocer a la herramienta que utilizaremos para programar nuestro reto y habeis reflexionado sobre sus ventajas respecto a las utilizadas hasta ahora. Es el momento de familiarizarte  con su interfaz, conocer sus partes y las nuevas funcionalidades que presente. ¡Descubrirás un entorno de desarrollo más cómodo que el que has utilizado previamente! Navega por los apartados de esta presentación y practica para aprender qué te ofrece:

5. Un primer paso somero: Crea tu entorno PyCharm

Comienza tu inmersión acercándote a la orilla, en aguas someras del entorno de la POO: instala el nuevo entorno que usarás para tus programas y proyectos.

Ya has podido comprobar que PyCharm ofrece múltiples ventajas respecto al IDLE que hemos utilizado hasta ahora para escribir nuestros programas: ofrece información sobre funciones y comandos que se están usando, el tipo de una variable o expresión, fácil detección de errores... No esperes más, ¡comencémoslo a usarlo!

Según tu sistema operativo, la web del proyecto PyCharm te ofrece diferentes instaladores. Aquí utilizaremos PyCharm Community Edition, que es una herramienta ofrecida de manera gratuita construida en código abierto. Te presentamos aquí los pasos a seguir según los dos SO más utilizados:

Uso un SO basado en Windows

El primer paso es descargarte el fichero ejecutable de la web del proyecto:
https://www.jetbrains.com/pycharm/download/#section=windows

Una vez descargado, sigue los pasos del siguiente vídeo para realizar la instalación. Verás que es muy sencilla.

Puedes descargar los subtítulos del video en formato .vtt haciendo clic aquí.
Si lo prefieres, también puedes descargarlos en formato .txt haciendo clic aquí.

Uso un SO basado en Linux-Ubuntu

Para instalar PyCharm en un sistema Linux existen varias formas. La más cómoda es utilizar un gestor de paquetes o snap tool. A continuación puedes ver el comando a utilizar con esta herramienta y los pasos que te encontrarás:

PASO 1

Abre un terminal y escribe el siguiente comando:
sudo snap install pycharm-community --classic

PASO 2

El proceso de instalación comienza entonces:
Inicio instalación

PASO 3

El último paso es ejecutar el programa con el siguiente comando:
pycharm-community

PASO 4

Cuando aparece la ventana de "Instalación completa", pulsamos "Ok":
Instalación completa

PASO 5

En la política de privacidad marcamos "I confirm" y "Continuar":
Política privacidad

PASO 6

Finalmente, decidimos si queremos enviar datos anónimos de uso del software y el sistema procederá a la personalización (sobre la que puedes consultar más información en el vídeo que te proponemos en el icono de ampliación que sigue).
Datos anónimos



¿Quieres personalizar tu entorno?

Si deseas personalizar y configurar PyCharm te proponemos el siguiente vídeo que te acompañará por las diferentes opciones:

6. Un paso más hondo: Mi primer proyecto

Se ve la imagen de un pez saltando de una pecera pequeña a una grande¡Ya tienes disponible tu nueva herramienta de programación! Es hora de estrenarla... Vas a crear tu primer proyecto PyCharm en el que escribirás un programa simple. La intención ahora es aprender a crear un proyecto, con su fichero de programación que recogerá el código y a continuación vas a ver cómo ejecutarlo y comprobar qué aparece por pantalla si se ejecuta el programa. Sigue los pasos que se te proponen en este ejercicio.

En la columna izquierda encontrarás las indicaciones de cómo realizar las acciones que te resultarán novedosas a la hora de trabajar con Python en PyCharm, como los pasos previos a crear el código de tu programa y la ejecución final para probarlo. No te olvides de ir realizando cada paso en PyCharm en tu ordenador a medida que construyes el programa.

¿Cómo creo un nuevo proyecto en PyCharm?

PASO 1

En primer lugar, abrimos PyCharm y escogemos "Abrir nuevo proyecto":
Captura de pantalla de la interfaz de PyCharm pulsando la opción de 

PASO 2

  • En la pantalla siguiente escribimos un nuevo nombre para nuestro nuevo proyecto. En este caso se ha elegido "numerosAleatorios".
  • En la opción Project Interpreter debemos seleccionar el intérprete de Python a utilizar en el proyecto. PyCharm nos presenta dos opciones:
    • Nuevo ambiente (New Environment): Si seleccionamos esta opción, pycharm instalará un intérprete de python exclusivo para el proyecto a crear. 
    • Intérprete existente (Recomendado): PyCharm nos permitirá escoger el intérprete de python que tengamos instalado en nuestra computadora. Se recomienda utilizar esta opción que utilizará el intérprete de Python que instalamos previamente.
  • Una vez seleccionado el intérprete, hacemos click en Crear.
Eligiendo interprete seleccionando 

¿Cómo creo un archivo dentro del proyecto?

PASO 1

Damos click derecho en el nombre del proyecto. Esto, desplegará un menú contextual, escogeremos Nuevo o New, luego Archivo o File y luego Archivo Python o Python File. Tal como se puede observar en la siguiente figura:
Crear archivo en proyecto pinchando en el nombre y eligiendo 

PASO 2

Se nos pedirá ingresar el nombre del nuevo archivo. En este caso lo hemos llamado numerosAleatorios. Ponemos el nombre y pulsamos Intro.

Escribir el nombre del fichero en el campo 

¿Cómo ejecuto el código Python?

PASO 1

Si queremos ejecutar el código Python, deberemos dar click en el menú Run, luego escoger Run:
Iniciando ejecución en la opción 

PASO 2

Hacer click en el archivo que queremos ejecutar. El resultado de la ejecución de todo nuestro archivo se mostrará en la sección de consola PyCharm en la parte inferior de la pantalla:

Seleccionar archivo a ejecutar de los mostrados en la ventana llamada 

Vamos a crear un programa que genere un número aleatorio entre 48 y 122. Una vez generado, si su equivalente ASCII corresponde a un número, una minúscula o una mayúscula dicho carácter pasará a formar parte de una cadena de caracteres. Cuando esta cadena tenga una longitud de 8 caracteres, la mostrará por pantalla. Para comenzar el proyecto, crear el fichero y ejecutarlo, remítete a los apartados de la columna de la izquierda. A continuación te apuntamos una serie de pasos a tener en cuenta para crear tu algoritmo:

  1. PASO: En primer lugar debes crear un número aleatorio. Para ello te recomendamos que consultes la librería random. Encontrarás que tienes dos opciones para generar un número aleatorio usando dos métodos diferentes: randint() o random().
    OJO: Si usas este último, como puedes consultar en el enlace de la librería, random() devuelve un valor entre 0,00 y 1,00. Este valor tendrás que llevarlo a que esté entre  48 y 122 (tendrás que realizar alguna operación matemática) y quedarte con la parte entera de dicho número (investiga la librería math), ¿devuelve la función que utilizarás un tipo entero? (Es lo que necesitamos para convertir a ASCII).
  2. PASO: Ahora debes averiguar si el número obtenido es un carácter ASCII de un número, minúscula o mayúscula. Para ello tendrás que ayudarte de la siguiente tabla ASCII (apdo. Caracteres imprimibles ASCII) y ver en qué rango está el número obtenido para saber si es un carácter de los válidos. ¿Qué tipo de estructura de control utilizarías para ver si está en los rangos de los caracterres ASCII que cumplen ser número, minúscula o mayúscula?
  3. PASO: Si el número aleatorio obtenido cumple los requisitos, debes convertir a tipo carácter el número obtenido para que el programa lo entienda como un carácter. Usa para ello la función char().
  4. PASO: Una vez obtenido el carácter, lo incluimos en nuestra variable cadena de caracteres. Para añadirlo al final, recuerda las operaciones que puedes hacer con las variables de tipo secuencia.
  5. PASO: Repite las operaciones hasta que nuestra cadena de caracteres (tipo secuencia) tenga la longitud de 8.
  6. PASO: ¡Prueba tu programa!

¿Para qué podríamos utilizar este programa?

Fíjate bien en el resultado obtenido: Se parece a una contraseña, ¿verdad?

¡Has encontrado una manera de generar contraseñas de manera aleatoria!

Clavis dice ¡Pon mucha atención!

Cuando tienes que programar algo es muy importante no cometer errores en el resultado final.

Un truco para centrar la atención es que vayas siguiendo cada paso y comprobando que lo que vas haciendo está bien y el programa hace lo que tú esperabas.

Puedes ir comprobándolo en el programa que uses.

La estrategia de supervisar cada paso ayuda a controlar los posibles errores que pueda haber y resolver las dificultades. Esta estrategia se puede usar en cualquier tarea en la que tengamos que hacer varios pasos (cualquier ejercicio de programación, un problema matemático, un análisis de oraciones y muchas más).

¡Pruébala y verás que no se te olvida nada!

7. Fallo ¡¿Ahora qué?!

Imagen de un ordenador del que sale una mano que sostiene el mensaje errorImaginad que habéis creado un programa de forma colaborativa y, en consecuencia, os encontráis frente a un código bastante extenso. De repente, al realizar la prueba global de funcionamiento...fallo. ¡¿Ahora qué?!
Reflexionad en el grupo de trabajo sobre este problema y proponed soluciones como respuesta a la siguiente cuestión:

¿Qué sugerencias de depuración proponéis que se podrían realizar en el programa para detectar dónde está el fallo?¿Cuál sería más rápida?

La depuración de programas es el proceso de identificar y corregir errores de programación.En inglés se conoce como debugging, porque se asemeja a la eliminación de bichos (bugs), manera en que se conoce informalmente a los errores de programación.

¿Necesitáis ayuda?

Pensad en maneras de interpretar los mensajes de la consola en la que se muestran los resultados: líneas de código que aparecen, se mostraría una orden de impresión por pantalla, caso de prueba: mejor y peor condición...y siempre queda ver cada paso o línea.

Un caso de prueba (en inglés, test case) es un conjunto de condiciones o variables bajo las cuales se determinará si una aplicación, un sistema de software o una característica o comportamiento de estos resulta o no aceptable.

8. Profundizamos: Depura tu aplicación

Imagen de un coche con dos listas donde se especifican los métodos y los atributosUna vez que has aprendido a construir y probar un programa en la nueva interfaz PyCharm, es importante que conozcas sus utilidades de depuración. Ya habéis reflexionado sobre cómo se podría detectar un error de ejecución en un programa. Te puede haber parecido algo dificil, ¡pero no!: Vas a ver que este entorno nos ofrece métodos muy útiles para comprobar el funcionamiento de nuestros programas y proyectos y localizar fácilmente los errores de funcionamiento.
Para probar la depuración, vas a comenzar creando un nuevo proyecto que contenga un fichero Python con el código que te ofrecemos aquí: programa para crear el fichero.

Este programa crea la clase Coche con una serie de propiedades (atributos) y funciones (métodos), y además realiza un pequeño funcionamiento de nuestro coche. Pero el código contiene un error de funcionamiento, que vas a encontrar siguiendo la acciones que se te indican en las pestañas inferiores.
Nota: No te preocupes si no entiendes bien qué hace este código: en los próximos apartados conocerás a fondo la POO y aprenderás cómo crear estas clases de elementos y después sus objetos. En esta práctica céntrate sólo en depurar el error que vas a encontrar que tiene.

¿Problemas?

Vamos a probar nuestro programa. Crea un nuevo proyecto llamado coche, y dentro de él crea el correspondiente fichero Python para albergar el código proporcionado. Veamos qué sucede cuando iniciamos el script e intentamos averiguar nuestra velocidad promedio (opción V en el programa):

Error división por cero que aparece como ZeroDivisionError en la consola de la parte inferior.(Clic para ampliar)

Uuuupss, PyCharm informa de un error de tiempo de ejecución: un mensaje ZeroDivisionError.

Comenzamos la depuración

Profundizamos un poco más en nuestro código para descubrir qué está fallando. Usaremos el depurador de PyCharm para ver exactamente lo que sucede en nuestro código. Para comenzar la depuración, primero establecemos algunos puntos de interrupción:

Para crear puntos de ruptura haz clic en la línea en el gutter:

Crear punto de ruptura haciendo clic junto al número de línea.
(Clic para ampliar)

A continuación, selecciona en el menú Run → Debug:

Opción Run subopción Debug seguido del nombre del fichero
(Clic para ampliar)

PyCharm inicia una sesión de depuración y muestra la ventana de la herramienta de depuración:

Inicio de depuración donde la zona de depuración es la ventana inferior de la pantalla.
(Clic para ampliar)

Saltamos al siguiente paso

Ya ha comenzado la depuración, y el programa se ha quedado en el primer punto de ruptura que colocamos. Vamos a comenzar ahora entonces el salto al siguiente paso del script:

Pulsa el botón botón reanudar para comenzar la ejecución y en la pestaña de consola escribe V y pulsa Intro:

Consola y botón tercero en la zona de consola a la izquierda.
(Clic para ampliar)

Haz clic en el botón botón reanudar para reanudar la ejecución del script. Aquí está la excepción. También aparece otro punto de interrupción: PyCharm se detendrá ante cualquier excepción que no haya sido detectada en su código y mostrará un icono de un punto de interrupción con un rayo:

Punto de ruptura: aparce un rayo en el número de línea.
(Clic para ampliar)

El depurador también muestra el mensaje de error. Así que has encontrado el problema. También se puede ver en el depurador que el valor del atributo tiempo es igual a cero:

Error encontrado en la consola al observar el valor de la variable tiempo.
(Clic para ampliar)

Surround

Vamos a probar ahora la opción "Surround" que nos propone nuestro nuevo entorno y que ya conociste en el ejercicio interactivo anterior. Para evitar la división por cero, añadiremos una estructura if para verificar si el tiempo es igual a cero antes de realizar la operación. Veamos cómo hacerlo.

Selecciona la instrucción return self.cuentakilometro / self.tiempo en el método velocidad_media y luego selecciona en el menú de PyCharm Code → Surround with

Se selecciona la opción de menú Code ->Surround with
(Clic para ampliar)

Selecciona la estructura if y entonces PyCharm crea dicha construcción dejándote la labor de poner la condición adecuada:

Estructura if creada automáticamente en la misma línea del rayo.
(Clic para ampliar)

Escribe la condición correcta: if self.tiempo != 0:
¡Y el programa queda arreglado!

Programa arreglado con la estructura condicional correcta.
(Clic para ampliar)

En detalle

Si deseas ver lo que hace tu código línea por línea, no es necesario colocar un punto de interrupción en cada línea: en PyCharm puedes recorrer el código paso a paso.
Puedes usar los botones de la barra de herramientas de paso a paso para elegir en qué línea te gustaría detenerte a continuación: Barra de herramientas de paso a paso
Veamos ahora el funcionamiento de algunos de ellos.

Step over

Haz clic en el botón botón reanudar y ve a la Consola para solicitar la velocidad promedio del automóvil (escribir 'V'). Verás que se para en nuestro punto de interrupción primero. Ahora haz clic en el botón step overy verás el marcador azul moviéndose a la siguiente línea de código:
STEP OVER: segundo botón en la barra horizontal de la línea de consola.

Step into

Si haces clic en el botón Step into, verás que después de la línea accion = input("¿Qué quieres que haga? ¿[A]celerar, [F]renar, mostrar [C]uentakilómetros, o mostrar la [V]elocidad media?").upper() el depurador entra en el archivo parse.py. Esto es porque incluye el código propio de las funciones del sistema:
Step into: tercer botón en la barra horizontal de la línea de consola.
Además, si ahora usas el botón Step over step over, el programa pasa al siguiente paso del bucle while, pero si, por el contrario, usas el botón Step into my code step into my codeseguirás paso a paso dentro del bucle en nuestro propio código, ignorando el del sistema.

Watching

PyCharm te permite ver el valor de cualquier variable. Simplemente escribe el nombre de la variable que deseas observar en el campo Evaluar y observar, por ejemplo mi_coche.cuentakilometro, haciendo luego clic en el botón al lado del campo:
Watching: botón con forma de + que aparece a la derecha en la línea de la variable en la consola.
Al principio, verás que la variable da error, porque aún no está definida. Sin embargo, cuando la ejecución del programa continúa hasta el alcance que define la variable, aparece su valor.
Además, puedes comprobar que existe la depuración inline: poniendo el ratón sobre una variable en el código, también puedes consultar su valor en ese momento.
 

Para saber más

Si quieres conocer la explicación detallada de todos los botones de la barra de herramientas de paso a paso, aquí te la mostramos:

Elemento Nombre Descripción
mostrar punto de ejecución Mostrar punto de ejecución Haz clic en este botón para resaltar el punto de ejecución actual en el editor.
Step over Step over Haz clic en este botón para ejecutar el programa hasta la siguiente línea en el método o archivo actual, omitiendo los métodos a los que se hace referencia en el punto de ejecución actual (si corresponde). Si la línea actual es la última del método, la ejecución pasa a la línea ejecutada inmediatamente después de este método.
Step into Step into Haz clic en este botón para que el depurador pase al método llamado en el punto de ejecución actual.
Forzar step into Forzar step into Haz clic en este botón para que el depurador pase al método llamado en el punto de ejecución actual, incluso si se va a omitir este método.
Step into my code Step into my code Haz clic en este botón para saltarte las fuentes de la biblioteca y concentrarte en tu propio código.
Step out Step out Haz clic en este botón para que el depurador salga del método actual, a la línea que se ejecuta inmediatamente después.
Ir al cursor Ir al cursor Haz clic en este botón para reanudar la ejecución del programa y hacer una pausa hasta que el punto de ejecución llegue a la línea en la ubicación actual del cursor en el editor. No se requiere ningún punto de interrupción.
Evaluar expresión Evaluar expresión Haz clic en este botón para obtener el valor de una expresión.