×
Preliminares
Presentación
Informática
Acerca del autor
Introducción
La programación como reto
Lenguajes de programación
¿Por qué Pyhton?
Pasos previos
Descarga de Python
Instalación de Python
Preparación del entorno de trabajo
1 Primeros pasos
2 El mundo desde un ordenador
3 Ampliando horizontes
4 Teoría y teoremas
5 Jugando con Python

Aprender Python:

Preliminares

Presentación

Informática

La palabra informática es un galicismo que proviene de la palabra francesa informatique, que a su vez es una contracción de la expresión information automatique, información automática, que interpretaremos en el sentido de obtención y proceso automáticos de la información.

El diccionario de la RAEREAL ACADEMIA ESPAÑOLA la define como el "conjunto de conocimientos científicos y técnicas que hacen posible el tratamiento automático de la información por medio de computadoras"

Las palabras computador o computadora son anglicismos (desde computer) que hacen referencia a la capacidad de dichas máquinas de computar, es decir, de realizar cálculos. En español existe tambien el galicismo ordenador (desde ordinateur) que resalta la capacidad de poner una serie de datos en orden, y que prefiero a la versión inglesa y emplearé a partir de ahora habitualmente.

Los ordenadores son las máquinas que han hecho posible el desarrollo de la informática, y esta ha demostrado ser una herramienta tan útil y versátil que ha invadido prácticamente todos los aspectos de nuestra vida.

La capacidad de manejar números de estos los hizo ser empleados inicialmente para el desarrollo científico, aplicaciones de ingeniería y usos militares. Según fueron resultando más accesibles se incorporaron a la gestión mercantil, económica y burocrática y a la automatización y control de procesos industriales. Con la llegada de ordenadores de un tamaño y un precio asequible para particulares la presencia de la informática en nuestras vidas se ha incrementado exponencialmente año tras año y se ha extendido a terrenos como la educación, la medicina y el ocio.

En la actualidad tenemos informática en los electrodomésticos de la cocina y del resto de la casa, en nuestros vehículos, en los juguetes infantiles (y algunos no tan infantiles como las consolas de juegos) y la llevamos encima en forma de relojes, teléfonos móviles y otros aparatos. La informática gestiona el tráfico, las redes de distribución de suministros, la administración de empresas y de países y nos da un acceso a la información desde cualquier lugar que hace unas décadas no habríamos siquiera imaginado.

La informática se implanta de este modo en diversos sistemas, pero la herramienta fundamental sigue siendo el ordenador. El ordenador es una máquina electrónica versátil que a diferencia de otros dispositivos informáticos no tiene una función definida, sino que puede ser empleado para innumerables tareas diferentes. Está compuesto de una serie de elementos físicos (hardware) preparados para realizar procesos lógico-matemáticos siguiendo un programa, esto es, una secuencia de instrucciones (software). La parte física determina aspectos como el rendimiento pero es la parte lógica la que lo convierte en una herramienta de enorme potencia en muchos campos. La programación es la disciplina que nos enseña a diseñar y dar existencia a esta última.

En un futuro próximo habrá microchips prácticamente en cualquier objeto fabricado que empleemos (el internet de las cosas). Todo lo dicho pone de relieve la importancia que la tecnología informática ha adquirido en nuestra vida y que irá en aumento con el tiempo.

De todo esto es fácil comprender que los conocimientos informáticos son en estos momentos tan importantes como lo ha sido la alfabetización un par de generaciones atrás, y que deberiamos tener el mayor interés en adquirirlos y en potenciarlos. Como la informática es un conjunto de técnicas podemos poseer conocimientos de un cierto nivel sobre algunos aspectos y ninguno en absoluto o de un nivel muy diferente en otros.

Por ejemplo, podemos definir las siguientes áreas:

Y en cada área los siguientes niveles:

La mayoría de las personas (no profesionales) con acceso a medios informáticos tendrán nivel de usuario en las dos o tres últimas áreas y posiblemente una ignorancia casi absoluta de las anteriores. Algunos pueden tener nivel de usuario o usuario avanzado en las cinco o seis áreas finales y en su sistema operativo.

El presente curso se centra en los lenguajes de programación, y concretamente en el lenguaje Python y en Windows, pero teniendo en cuenta que un programador debe tener amplios conocimientos de todas las demás áreas, especialmente de las cinco primeras de nuestra lista, por lo cual trataré de ahondar en ellas a la vez que avanzamos en las habilidades de programación mediante Python. Se asume que como lector tienes un nivel básico en manejo de ordenadores de tipo PC bajo el sistema operativo Windows. Fundamentalmente que sabes encender el ordenador, navegar a través de las carpetas y emplear el navegador para acceder a internet.

Trataré de exponer las capacidades del lenguaje de una forma progresiva y profusamente ilustrada mediante ejemplos. También proporcionaré enlaces a la información de primera mano por si te interesa ahondar más en algún aspecto. Por otra parte, dado que se trata de una obra de gran extensión y hecha por una sola persona agradeceré cualquier correción o comentario que puedas hacerme. En cualquier caso espero que disfrutes y aprendas de su lectura.

Acerca del autor

Las casualidades tienen un peso muy grande en la vida. Un hecho totalmente casual fue tener todo un verano a mi disposición (y a la de mis once hermanos) un pequeño ordenador, concretamente el Sinclair ZX81. Aquella máquina se enchufaba a un televisor y podía cargar y guardar programas desde cintas de cassette, pero la caja solamente incluía el ordenador, un completo manual, la fuente de alimentación y sus cables. Ningún programa en absoluto. Este hecho providencial supuso que para poder sacar algún provecho de aquello tuvimos que leer el manual en el que explicaba el lenguaje BASIC y que crear nuestros propios programas. Sobre una pantalla en modo texto programamos una serie de pequeños juegos, pero lo realmente estimulante no fue el resultado sino el propio proceso para llegar a aquel. Al año siguiente apareció una pequeña joya de la historia de la informática; el Sinclair Spectrum, y muy pronto adquirimos uno que nos permitió seguir programando, y también disfrutar de muchos juegos.

El ZX81 y el Spectrum 48k

Las revistas Microhobby y Micromanía nos ayudaron a aumentar y consolidar conocimientos, como la introducción al Código Máquina y al ensamblador, y otro hecho casual fué mi adquisición de un libro sobre algo llamado lenguaje C, y el hallazgo en el popular mercadillo del rastro Madrileño de un compilador de C para Spectrum en cinta de cassette. A partir de ahí la trayectoria siguió hacia los ordenadores de tipo PC bajo MS-DOS y fuí explorando lenguajes como PASCAL, Ensamblador del 8086, DBASE, AutoLisp, PostScript, los lenguajes de la WEB (HTML, CSS y JavaScript) y C++ entre otros.

En un momento dado, mi carrera como músico profesional y las obligaciones familiares me fueron apartando del absorbente mundo de la programación aunque siempre he mantenido el contacto con la actualidad informática, con los primeros ordenadores multimedia, redes como FidoNet y posteriormente Internet, la llegada de los interfaces gráficos y las enormes posibilidades lúdicas de los ordenadores ;-)

En Marzo de 2020 llegó la pandemia de la Covid-19 y la vida dió un vuelco para todos. De repente mi trabajo me obligaba a la grabación y edición de música en casa y, sin ningún tipo de apoyo técnico, tuve que aprender a manejar el editor de sonido Audacity para realizarlo. Del sonido pasé al vídeo y los editores Filmora y DaVinci Resolve, y del vídeo a la edición 3D con el estupendo programa Blender.

Y practicando con Blender descubrí un sistema de script integrado en este mediante un lenguaje de nombre Python y acabé volviendo a los orígenes y programando en este nuevo lenguaje. Al indagar sobre ello llegué a trascender los límites de Blender y realizar programas generales mediante el intérprete de Python. Con objeto de plasmar mis descubrimientos de una forma sistemática y de paso ayudar a mi hijo pequeño con sus estudios me planteé crear este curso, y aquí tienes el resultado de esta cadena de casualidades; espero que te resulte útil a la vez que ameno.

MAV - Noviembre de 2020

Introducción

La programación como reto

Hay disciplinas que influyen poderosamente en la misma forma del pensamiento, más allá de los conocimientos que puedan proporcionar. Dos de ellas (y de primer nivel) son la música y la programación. Yo tengo la suerte de que la primera es mi vida y la segunda mi pasión. La programación es una disciplina científica y a la vez un arte que combina, como dice en el estupendo libro de Allen Downey: "Aprenda a pensar como un programador con Python": "las mejores características de la matemática, la ingeniería y las ciencias naturales. Como los mátemáticos, los científicos informáticos usan lenguajes formales para expresar ideas. Como los ingenieros, diseñan cosas ensamblando sistemas a partir de componentes y evaluando las diferentes alternativas. Como los científicos, observan el funcionamiento de sistemas complejos, forman hipótesis y ponen a prueba sus predicciones."

Además de esto la programación es como la búsqueda de la solución de un complejo puzzle o de un caso detectivesco, con el mismo grado de absorción y disfrute que puede haber en ella. Por si esto fuera poco, realizar nuestros propios programas nos permite obtener resultados prácticos en nuestro empleo del ordenador consiguiendo automatizar procesos que de otro modo podrían resultar imposibles de realizar o tediosos.

Además de lo dicho, programar siempre ha sido una capacidad muy demandada por el mercado de trabajo y nos puede abrir las puertas de un buen futuro profesional. Haciendo una búsqueda en Google sobre las profesiones más demandadas esto es lo primero que he obtenido.

Profesiones más demandadas según Google

En los diferentes enlaces que Google nos ofrece a continuación del mostrado están presentes de una forma apabullante las tecnologías de la información.

Por supuesto, si te llegaras a plantear dedicarte profesionalmente a ello deberías adquirir conocimientos reglados mucho más allá de las pretensiones de este curso, pero puede ser una forma de iniciarse en este mundo.

Lenguajes de programación

Para los ordenadores solo existen números y son muy buenos realizando operaciones con ellos. Estrictamente hablando se trata de números binarios, en un sistema de base 2 en el que solamente existen dos dígitos, el 0 y el 1. Y si aún somos más estrictos en relidad se trata de pulsos electrónicos que representan los valores 0 y 1. Para emplear datos como textos, imágenes o sonidos en un ordenador debemos convertirlos previamente en series de números de acuerdo con una clave que relaciona los valores numéricos con aspectos como una letra del alfabeto, un punto de color o una amplitud sonora. Este proceso se llama digitalización, pero no es lo que nos interesa en este momento.

Los ordenadores interpretan secuencias de órdenes que, como todo lo demás, son también valores binarios. Llamamos a esto código máquina y tiene el siguiente aspecto:

Código máquina

Para el ser humano resulta tan difícil no ya de interpretar sino simplemente de leer como natural para la máquina. De aquí que haya que establecer algún tipo de puente entre nuestro lenguaje y el código máquina y aquí es donde se desarrollan los lenguajes de programación. Los lenguajes de programación son lenguajes formales a diferencia de las lenguas humanas que son lenguajes naturales. Los lenguajes formales son construcciones artificiales cuyos símbolos y normas para unirlos están formalmente especificados. El conjunto de símbolos constituye el vocabulario del lenguaje y el de normas la sintaxis, y cualquier expresión que incluya símbolos no establecidos o no cumpla las normas no pertenece al lenguaje y no será comprendida por el interlocutor (en este caso, la máquina). No hay espacio para ambigüedades.

Se han desarrollado numerosos lenguajes para programar, empezando por el lenguaje Ensamblador (Assembler) que es una conversión directa del código máquina a palabras más comprensibles para las personas y que es diferente para cada máquina (concretamente para cada microprocesador). Se trata de instrucciones muy sencillas que podemos combinar para realizar procesos más y más complejos. Siendo un leguaje tan próximo a la máquina decimos que es un lenguaje de bajo nivel (el más bajo posible) y nos permite realizar cualquier cosa pero a costa de un tremendo esfuerzo de programación.

A partir de aquí se han creado lenguajes que permiten realizar procesos de decenas o centenares de instrucciones en código máquina mediante una única orden. Lenguajes de niveles intermedio y alto que nos facilitan enormemente la labor de programación. Ejemplos de estos lenguajes son el BASIC, el PASCAL o el C (sin duda el rey de los lenguajes, que ha dado lugar a evoluciones como C++ y C# que aún dominan el ranking). También otros como Java, PHP, Perl, Lisp o Python. La lista es realmente interminable.

Entre todos ellos podemos seleccionar Python como lenguaje principal, C/C++ para aquello que en Python no podemos realizar o cuando la velocidad sea una premisa fundamental y JavaScript para desarrollar páginas WEB (Este último dentro del cóctel de lenguajes de la WEB que incluye HTML y CSS). Con este bagaje puedes hacer cualquier cosa mediante un ordenador, pero por el momento nos centraremos en la hoja principal de esta "navaja suiza" que es Python.

¿Por qué Python?

Habiendo tal diversidad de lenguajes, expondré los motivos de haber elegido Python como lenguaje principal y como objeto de este curso. Las características del lenguaje son:

No vamos a explicar todos los conceptos -ya iremos entendiéndolos a lo largo del curso- pero sí algunos de ellos que son sencillos e importantes.

  • Interpretado:

  • Hay dos grandes "familias" de lenguajes de programación, los compilados y los interpretados. El desarrollo de un programa compilado es más complejo, hay que dar más pasos desde que tecleamos las instrucciones hasta que conseguimos que sean ejecutadas. El hecho de ser interpretado proporciona a Python una cualidad inestimable para el aprendizaje que es la interactividad. Podemos teclear órdenes y ver el efecto inmediatamente sin necesitar un programa terminado.

  • Alto nivel:

  • Los lenguajes de bajo nivel están muy próximos a la máquina y exigen un conocimiento profundo de esta. Las instrucciones son tan simples que procesos que realiza una sola orden de alto nivel pueden requerir un programa entero en bajo nivel. Esto redunda en un mayor esfuerzo y complejidad de la programación que los hace poco adecuados para una introducción a la programación desde cero. Los lenguajes de alto nivel, por el contrario, disponen de instrucciones que permiten realizar procesos complejos mediante una sola orden. Es más sencillo realizar un programa con ellos y son más adecuados para aprender.

  • Formato estructural:

  • Aspectos como la indentación forzosa y la propia sintaxis del lenguaje hacen que sea mucho más fácil de leer que otros. Las órdenes del sistema se aproximan bastante al lenguaje natural (inglés).

  • Código abierto:

  • El libre acceso al código de los programas permite que una multitud de programadores trabajen sobre ellos adaptándolos y modificándolos, dando como resultado un mejor software y un menor tiempo de desarrollo. Además podemos descargar las herramientas del lenguaje sin necesidad de pagar por ello y disponemos de una documentación inmensa accesible para cualquiera.

  • Filosofía:

  • El principio de las baterías incluídas implica que no necesitamos recurrir a nada fuera del propio paquete del lenguaje para poder realizar programas en cualquier campo. La distribución básica de Python incluye todo lo que puedas necesitar y mucho más. Además, siendo un programa desarrollado por una ingente comunidad, dispone de herramientas (bibliotecas) ya diseñadas para darnos una enorme capacidad con muy poco esfuerzo.

  • El Zen de Python:

  • Se trata de una serie de principios que están presentes en el diseño y desarrollo del lenguaje.

    Además, ¿cómo no sentir apego por un lenguaje que recibe su nombre del genial grupo Monty Python?

    Pasos previos

    Descarga de Python

    Lo primero que tenemos que hacer es descargar e instalar la última versión de Python:

    Windows te da la opción de hacerlo desde la tienda de aplicaciones de Microsoft, pero yo no te lo recomiendo. Si lo haces de este modo no tendrás ningún control sobre la ubicación de los programas ni tendrás acceso a esta para realizar modificaciones y además en los momentos de escribir estas líneas no está disponible la última versión. Lo mejor es ir a la página oficial de Python:

    https://www.python.org

    De paso, desde esta página tienes acceso a toda la documentación sobre el lenguaje y sus bibliotecas. Puedes elegir el español como idioma pero amplias secciones están sin traducir, en inglés. Aprovecho para indicarte que si te introduces en este mundo te vendrá bien un manejo amplio de este idioma.

    Descarga de Python

    Al pulsar la pestaña Descargas (Downloads) se abrirá una ventana emergente (pop-up) desde la que puedes elegir la última versión disponible para windows. Pulsa sobre ella y te indicará que va a realizar la descarga del fichero correspondiente. Elige la opción guardar archivo, si te pide que elijas un directorio hazlo y pulsa guardar.

    Guardando el fichero de instalación

    Ahora hemos de ir a la carpeta donde has descargado el fichero. Dependiendo del navegador que uses estos son los pasos a seguir.

    Si tienes el navegador Firefox (que te recomiendo) a la derecha de la barra de direcciones el icono con la flecha hacia abajo cambia a color azul una vez terminada la descarga. Si pulsas sobre él verás el fichero descargado. Con el botón derecho se abrirá un menú emergente del cual debes elegir la primera opción: "Abrir la carpeta que lo contiene"

    Si usas Edge la descarga efectuada aparecerá en la parte inferior izquierda. Pulsa sobre el botón ... y elige la opción "Mostrar en carpeta". Si usas Internet Explorer cambia inmediatamente a Edge, Microsoft ha optado por este último como navegador y ya no da soporte a aquel.

    En Chrome, como en Edge, la descarga aparecerá en la parte inferior izquierda. En dicha esquina abre el menú desplegable y selecciona "Mostrar en carpeta"

    Opera es similar a Firefox. A la derecha de la barra de direcciones aparece un icono de descarga con una flecha hacia abajo. Al pulsar sobre él verás la descarga y tendrás que pulsar el icono de la carpeta a la derecha.

    Llegados a este punto estarás en la carpeta de la descarga con el fichero seleccionado. Lo primero que debes hacer siempre que descargues cualquier cosa de Internet es comprobarlo con tu antivirus. En mi caso uso Avast y la integración con el explorador proporciona una opción de análisis en el menú contextual, que es el que aparece pulsando con el botón derecho sobre un archivo.

    Comprobación de virus

    Cuando el antivirus termine su trabajo deberá avisarte de que todo está en orden. En el caso de Avast aparecerá la siguiente ventana emergente en el área de notificaciones (la parte derecha de la barra de tareas).

    Informe de Avast
    Instalación de Python

    Una vez comprobado que está limpio procederemos a la instalación. Al hacer doble click sobre el fichero de instalación aparecerá la ventana siguiente:

    Instalador de Python

    Asegúrate de marcar la opción "Add Python 3.9 to PATH" y luego pulsa sobre "Install Now". Si Windows te pide permiso para dejar ejecutar el programa dáselo. Tras un pequeño rato la instalación estará completa. Para comprobarlo abre una ventana con el símbolo del sistema. Si no sabes cómo hacerlo, en el icono de búsqueda de la barra de tareas (justo a la derecha del menú inicio) pulsa e introduce: command en el campo de búsqueda.

    Buscar el Símbolo del sistema de Windows

    Pulsa sobre la aplicación "Símbolo del sistema" que te aparece como mejor coincidencia, en lo alto de la lista y también en el espacio de la derecha. En ese momento se abrirá una ventana del símbolo de sistema o consola.

    Consola o Símbolo del sistema

    Teclea: python<INTRO>. (Esto indica que teclees los caracteres que forman la palabra p-y-t-h-o-n y a continuación pulses la tecla a (también llamada ENTRAR, INTRO o RETURN en algunos teclados o indicada con el icono     ). Si todo ha ido correctamente la ventana del símbolo del sistema mostrará el siguiente aspecto:

    Prompt del intérprete de Python

    Para salir de aquí debes introducir la orden exit() (Introducir una orden consiste en teclearla y a continuación pulsar la tecla INTRO). De modo alternativo puedes usar la combinación de teclas: c + Z (pulsar simultáneamente las teclas ctrl y z) o directamente cerrar la ventana.

    También puede ocurrir que obtengas el siguiente mensaje de error:

    Defectos en la instalación de Python

    Este mensaje indica que no se ha encontrado el intérprete de Python, probablemente debido a que la casilla: Add Python 3.x to PATH no se activó durante la instalación. La solución pasa por abrir la ventana de configuración. De nuevo puedes usar la casilla de búsqueda de Windows. Al teclear tres letras de la palabra "configuración" en mi ordenador ya aparece la aplicación adecuada.

    Búsqueda de la configuración de Windows

    Ejecuta la configuración del sistema de Windows y elige la opción: Aplicaciones

    Verás una casilla de búsqueda que te permite localizar más rápidamente lo que buscamos. Teclea: python en ella.

    Configuración de aplicaciones de Windows

    Ahora solo debemos elegir la opción: Modificar y lanzaremos de nuevo el instalador de Python. Elige de nuevo la opción: Modificar (Modify).

    Relanzando el instalador de Python

    En la primera pantalla: Optional features (Características opcionales) puedes pulsar el botón: Siguiente (Next) y accederas a: Advanced options (Opciones avanzadas). Asegúrate de marcar la casilla Add Python to environment variables (Añadir Python a las variables de entorno) y pulsa el botón: Install para realizar la corrección.

    Modificando la instalación de Python

    Ahora si vuelves a abrir el símbolo del sistema debería ejecutarse la orden: python sin problemas. Si de todos modos no funciona, prueba el viejo sistema informático de salir del 600 y volver a entrar. Desinstala Python desde el menú de aplicaciones y vuelve a comenzar la instalación. Se supone que al terminar esta sección debes tener el intérprete correctamente instalado.

    Preparación del entorno de trabajo

    Una vez instalado el intérprete de Python podemos empezar a programar directamente, pero te recomiendo que sigas los pasos indicados a continuación para crear accesos directos en el escritorio a los elementos fundamentales. De paso aprovecho para comentar que soy absolutamente contrario a dejar que los programas creen sus propios accesos directos en el escritorio, que acaba convirtiéndose en un batiburrillo inmanejable de iconos. El escritorio debes gestionarlo tú manualmente, disponer en él solo los accesos que quieras y del modo que quieras.

    Para cualquier acción en informática (y en la vida en general) hay varias formas posibles de llevarla a cabo. Si no tienes idea de cómo colocar los accesos directos puedes seguir las siguientes indicaciones. Usando el buscador como en las anteriores ocasiones, busca: python. Ni siquiera necesitarás introducir toda la palabra.

    Entre las opciones que tienes en la parte derecha del recuadro de búsqueda está: Abrir ubicación de archivo. Pulsa sobre ella para abrir la carpeta.

    Opciones instaladas en el menú de programas

    Ahora estamos en la carpeta del menú de programas de Windows en la que se encuentran las cuatro opciones de Python. Selecciona las cuatro y arrástralas con el botón DERECHO del ratón al escritorio. Al soltar el botón aparecerá un Menú contextual con varias opciones. Pulsa sobre Copiar aquí y tendrás las copias de los cuatro programas disponibles directamente desde el escritorio. Colócalas de una forma ordenada en una línea o bloque y ya tenemos acceso a Python con un solo click.

    Las opciones como iconos en el escritorio

    Tendremos acceso a IDLE, el entorno integrado de desarrollo (IDE) incorporado en Pyhton, que es como comenzaremos a relacionarnos con el lenguaje. Además al intérprete en línea de comandos, que se ejecuta dentro del símbolo del sistema, y a dos medios estupendos de documentación y aprendizaje: El sistema de ayuda de nuestra versión de Python (en inglés) y el explorador de módulos instalados. Todo llegará e iremos viendo las cuatro posibilidades cuando tengamos una base suficiente. Por ahora ha llegado el momento de enfrentarnos a la programación con Python de un modo práctico.