2. Introducción¶
Empieza a programar ya. No tienes excusa, si estás leyendo ésto es que tienes un navegador y por tanto puedes probar el código que aparece en la siguiente celda editable:
Ahora pulsa el botón Run de la barra de botones. Verás que el mensaje entre comillas aparece junto a la celda editable. Ya has hecho tu primer programa, es así de simple. Prueba a cambiar el mensaje, poniendo eñes, tildes o signos de puntuación y volviendo a pulsar Run.
Prueba ahora a sustituir todo el mensaje entre comillas, incluídas las
comillas por un número y pulsa Run. Prueba también a poner una
expresión aritmética, por ejemplo 124 + (12 - 1.5) * 0.21
.
Finalmente prueba a añadir un espacio antes de print
. Es bastante
puntilloso, ¿verdad?
Probar es esencial, aunque te parezca tonto hazlo, tienes que desarrollar tu intuición para ver cómo puedes cambiar un programa para que haga lo que tú quieres.
2.1. Intérpretes y compiladores¶
El computador es una máquina bastante simple. Ejecuta de manera secuencial una serie de instrucciones elementales. Solo sabe ejecutar un repertorio limitado de operaciones muy sencillas que se denomina lenguaje máquina. Sin embargo nadie programa los ordenadores utilizando directamente lenguaje máquina. Eso sería de locos, complicaría incluso entender lo que hace un programa.
En la actualidad los computadores se programan usando un lenguaje de alto nivel. Se trata de un lenguaje más abstracto, fácil de entender, y muy regular. Los programas escritos en uno de estos lenguajes deben ser primero traducidos a lenguaje máquina. Esta traducción puede realizarse de dos formas.
- En los lenguajes compilados el programa es traducido previamente a lenguaje máquina antes de su ejecución, empleando un programa especial denominado compilador. El resultado puede ejecutarse directamente, sin necesidad de que vuelva a producirse un proceso de traducción.
- En los lenguajes interpretados el programa no se ejecuta directamente. En su lugar se ejecuta otro programa, denominado intérprete, que va leyendo el programa y ejecutando las instrucciones máquina correspondientes a cada fragmento identificado.
Cada una de estas opciones tiene sus ventajas y sus inconvenientes.
Los lenguajes compilados requieren un paso previo de compilación para poder ejecutar, pero esto solo se realiza una vez y el resultado puede ser optimizado globalmente. Sin embargo el resultado de la compilación (programa ejecutable) solo es válido para ordenadores que entienden el lenguaje máquina que ha generado, es decir, para una arquitectura de repertorio de instrucciones.
Por contra un intérprete no necesita este paso previo, por lo que el programa es válido para cualquier arquitectura. Sin embargo la traducción a lenguaje máquina se produce en cada ejecución, por lo que suelen ser sensiblemente más lentos.
Advertencia
En la actualidad la mayoría de los intérpretes utilizan una técnica híbrida entre el compilador y el intérprete clásico. Por un lado el intérprete realiza un procesamiento previo y almacena una versión extremadamente simplificada del programa que no llega a ser lenguaje máquina pero se parece (bytecode). Por otro lado suelen utilizar una técnica conocida como compilación just in time. El programa se traduce a lenguaje máquina la primera vez que se ejecuta
2.2. Instalación del software¶
Para trabajar desconectado de la red puede ser útil instalar software en tu propio ordenador. Sigue estos sencillos pasos y podrás editar cuadernos interactivos similares a los que usamos en clase en tu ordenador.
2.2.1. Microsoft Windows¶
- Descarga e instala la distribución oficial de Python 3. Pincha en el botón Download Python 3.x.y. En el momento de escribir este documento era Download Python 3.5.2 pero no repares en instalar la última versión. Ese botón descarga un ejecutable que contiene el instalador de Python que debes ejecutar. En este documento asumiremos que lo has instalado con las opciones por defecto, pulsando directamente en la opción Install Now del instalador, pero procura activar la opción Add Python 3.5 to PATH.
- Ejecuta el intérprete de órdenes de Windows pulsando la tecla con el
logo de Windows y teclando
cmd.exe
. - Escribe las siguientes órdenes en la ventana del intérprete de órdenes:
pip install ipython
pip install jupyter
En algunos casos hemos visto instalaciones en las que esto no funciona
porque pip
no está en la ruta por defecto. Esto ocurre cuando Python
no se ha añadido correctamente al PATH
. Añade manualmente las
siguientes rutas a la variable de entorno Path
. En el propio
intérprete de órdenes:
setx PATH "%PATH%;C:\Users\<usuario>\AppData\Local\Programs\Python\Python35"
setx PATH "%PATH%;C:\Users\<usuario>\AppData\Local\Programs\Python\Python35\Scripts"
Ten en cuenta que debes cambiar <usuario>
por tu nombre de usuario.
Es el nombre que aparece en el prompt del intérprete de órdenes (por
ejemplo, en mi caso el prompt es C:\Users\Francisco.Moya>
y mi
nombre de usuario es Francisco.Moya
). Ahora debería funcionar pip
.
2.2.2. Mac OS X¶
- Descarga e instala la distribución oficial de Python 3. Pincha en el botón Download Python 3.x.y. En el momento de escribir este documento era Download Python 3.5.2 pero no repares en instalar la última versión. Ese botón descarga un paquete que debes instalar. Tendrás una nueva carpeta MacPython 3.5 en la carpeta de Aplicaciones.
- Ejecuta la aplicación Terminal dentro de la carpeta Utilidades.
- Introduce las siguientes órdenes en la ventana del Terminal.
pip install ipython
pip install jupyter
2.3. Ejecutar Python¶
Si has seguido el procedimiento indicado tendrás dos entornos de programación muy útiles: IDLE y Jupyter.
IDLE es el entorno incluído en la distribución oficial de Python. No es muy avanzado pero es más que suficiente para los objetivos del curso. Tiene una interfaz gráfica primitiva, con una consola interactiva de Python y un editor multi-ventana integrado para escribir los programas.
Jupyter es un entorno para la programación desde un navegador web. Se trata de una herramienta interactiva con capacidad de integrar textos, gráficos y programas. Es una forma interesante de construir documentos que explican poco a poco los programas. Puedes probarlo también en línea, sin instalar nada, visitando try.jupyter.org.
Advertencia
En lo sucesivo asumiremos que el alumno usa Microsoft Windows porque es la opción más frecuente. Si eres usuario de otro sistema operativo trata de adaptar las instrucciones o pide ayuda en el foro del Campus Virtual.
2.3.1. Hola mundo con IDLE¶
Pulsa la tecla del logo de Windows
y teclea idle
. Si has
instalado correctamente Python aparecerá IDLE (Python 3.5)
o algo
similar. Pulsa Intro
y la ventana principal de IDLE aparecerá.
La ventana principal es una consola interactiva de Python. El símbolo
>>>
invita a introducir nuevas órdenes en Python. Se conoce por
su nombre en inglés, prompt.
Cuando Python se ejecuta en modo interactivo ejecuta las órdenes tan
pronto como se introducen. Por ejemplo, si introducimos el contenido
del programa Hola_Mundo
veremos el resultado inmediatamente.
>>> print('Hola Mundo')
Hola Mundo
>>> ▂
El modo interactivo es extraordinariamente útil para experimentar.
Una característica interesante de este modo es que el resultado de las
expresiones que se introducen se muestra automáticamente, como si
hubiéramos usado print
. Por ejemplo:
>>> 123.92 * 0.21
26.0232
>>> ▂
Es decir, funciona como una calculadora avanzada.
Sin embargo lo normal será que utilicemos archivos de texto para escribir nuestros programas. De esta forma podrán almacenarse en el disco para ejecutarlos tantas veces como deseemos.
Advertencia
Los programas se escriben en archivos de texto, no en documentos. No utilices Microsoft Word para programar. Utiliza IDLE o Jupyter.
Un archivo de texto solo contiene el programa. Por contra, un documento contiene además gran cantidad de información acerca de estilos, tipos de letra, formato de página, alineamiento, etc. Nada de eso será capaz de entenderlo el intérprete de Python.
Selecciona ahora la opción de menú Control-N
. Aparecerá una nueva ventana
similar a la principal, pero en este caso no hay intérprete de Python.
Es un editor de archivos de texto especialmente indicado para editar
programas en Python. Escribe ahora el programa Hola_Mundo
en la
nueva ventana. Cuando termines selecciona el menú
o pulsa F5
. La primera vez
que lo hagas IDLE avisará de que el archivo no está guardado y debe
guardarse antes de ejecutarlo.
Pulsa OK y escribe un nombre (por ejemplo hola
) en el cuadro de
diálogo que se muestra a continuación:
Inmediatamente aparecerá en la ventana principal lo siguiente:
======================== RESTART: /home/paco/hola.py ========================
Hola Mundo
>>> ▂
Como ves los programas Python se ejecutan siempre en la ventana principal. Sin embargo puedes tener un número arbitrario de ventanas de edición en las que editas tus programas.
El ciclo editar - ejecutar debe ser muy ágil. Debes acostumbrarte a
editar rápido con pequeños cambios que puedas probar y ejecutar
pulsando F5
para comprobar esos cambios. Evita escribir mucho
código sin probarlo. Lo más probable es que no funcione a la primera
y es mucho más difícil depurar (corregir) un programa grande que uno
pequeño.
2.3.2. Hola mundo con Jupyter¶
Otra forma de ejecutar Python es mediante un cuaderno Jupyter. Este entorno es más bien un editor de documentos en los que puedes insertar programas o fragmentos de un programa, así como los resultados producidos por su ejecución. Un aspecto interesante es que utiliza un navegador web como interfaz de usuario. Entre otras cosas eso hace que el usuario pueda disponer de un sinfín de características avanzadas del navegador (gráficos, animaciones, tipografía avanzada, etc.).
Jupyter puede utilizarse en línea sin necesidad de instalar nada pero te recomendamos instalarlo en tu propio ordenador para evitar problemas. Los servicios en línea de Jupyter que son gratuitos no tienen muchas garantías de disponibilidad. Por si quieres probar éstos son algunos de los mejores:
- Microsoft Azure Notebooks es la versión de Microsoft desplegada sobre sus servicios en la nube, Azure. Está en fase de pruebas (preview) y mientras eso ocurra es totalmente gratuito. Tarde o temprano será un servicio de pago, pero siempre habrá una capa gratuita (free tier). Es decir, con ciertas limitaciones siempre podrás utilizarlo de forma gratuita.
- IBM Data Scientist Workbench es algo lento para arrancar un cuaderno y la interfaz no está tan cuidada como en otros servicios, pero el soporte para computación científica es excelente.
- SageMathCloud es mucho más que cuadernos Jupyter, pero una de las cosas que permite hacer en un proyecto es crear cuadernos de Jupyter. El uso sin upgrades es gratuito pero puede no estar disponible en las horas pico.
- Binder te permite almacenar cuadernos Jupyter en un repositorio GitHub y el servicio de binder los permite ejecutar en línea. Es una forma excelente de colaborar en trabajos que puedes haber editado con cualquiera de las otras opciones, o en tu propio ordenador.
- Cuadernos Jupyter temporales es una demo de Jupyter que mantiene la propia organización de Jupyter. Siempre tienen la última versión liberada pero la disponibilidad en horas pico se resiente.
Para ejecutar un entorno similar en tu propio ordenador con la capacidad de guardar los cuadernos en tu propio disco sigue estos pasos.
Ejecuta un navegador web.
Ejecuta el intérprete de órdenes. En Windows puedes ejecutarlo pulsando la tecla
Windows
y escribiendo cmd. En Mac OS X ejecuta la aplicación Terminal.Introduce la siguiente orden:
jupyter notebook
Utiliza la ventana que se abre en el navegador para interactuar con Jupyter. Si no se abre ninguna ventana abre una nueva pestaña en el navegador y escribe la siguiente URL en la barra de direcciones:
localhost:8888
.
La ventana principal de Jupyter tiene el siguiente aspecto.
Se trata del administrador de archivos. Para crear un nuevo cuaderno selecciona el menú
. Aparecerá la interfaz de edición de documentos, como la que se muestra a continuación.Al crear un nuevo documento aparece automáticamente una nueva celda
editable. Las celdas de Jupyter pueden servir para diversos
propósitos, pero por defecto son para introducir programas. Así que
escribe en la celda el programa Hola_Mundo
. Después pulsa sobre el
botón con el signo de ejecutar y avanzar como muestra la figura.
Alternativamente se puede usar el menú o directamente pulsando Mays Intro
(Shift Enter
).
El resultado se mostrará justo bajo la celda y automáticamente avanzará a la siguiente celda. En este caso no hay celda siguiente y por tanto crea una nueva. Cada celda puede contener un fragmento del programa y se pueden ejecutar en cualquier orden, aunque lo normal es que se ejecuten en secuencia.
El documento se guarda automáticamente en el disco, pero con el nombre
Untitled
. Si deseas ponerle un nombre más adecuado basta hacer
doble click sobre el nombre en la cabecera.
Jupyter añadirá automáticamente la extensión .ipynb
a los
documentos.
Cuando hayas terminado de editar el documento selecciona el menú
. De esta forma nos aseguramos de que la copia del disco estará completamente al día.2.4. Elegir un entorno de programación¶
La elección del entorno en el que vas a trabajar depende exclusivamente de tu gusto personal. En esta asignatura no vamos a necesitar manejar grandes cantidades de código, ni vamos a utilizar bibliotecas externas. Por tanto el entorno va a aportar relativamente poco.
Nuestro consejo es que empieces con IDLE, que está incluido en la distribución oficial de Python. Por tanto está disponible en todos los ordenadores que dispongan de Python.
Más adelante, cuando domines el lenguaje, empieza a probar otros, como Jupyter, PyCharm, Eclipse PyDev, Netbeans Python, Visual Studio con Python Development Tools, etc.
No te rindas a la primera. Un buen entorno es normalmente complejo y requiere algo de tiempo acostumbrarse a él. Ese tiempo se recupera con creces en el futuro debido a los incrementos de productividad que permite.
A partir de este momento asumiremos que el entorno de programación que usaremos es IDLE. Si no es así en tu caso adapta las instrucciones a tu entorno.
2.5. Modo interactivo y modo script¶
Python tiene dos modos de funcionamiento que se aprecian perfectamente
en el entorno IDLE. El modo interactivo es el de la ventana principal
de IDLE. En este modo Python imprime automáticamente el resultado de
las expresiones que se le pasen, sin necesidad de usar print
.
Esto permite utilizarlo como si fuera una calculadora o para hacer
pequeñas pruebas. Las órdenes se ejecutan conforme se introducen en
el intérprete.
El modo script está pensado para cuando tenemos un programa completo y queremos ejecutarlo completamente. En ese caso el propio programa debe encargarse de mostrar los resultados que más nos interesan.
Averigua si las celdas de este libro interactivo usan el modo
interactivo o el modo script. Para ello basta introducir una
expresión sin ningún print
y comprobar si al ejecutarse se muestra
la expresión. Por ejemplo:
-
Q-7: Examina la salida del programa de arriba y en base a ello
selecciona el modo de ejecución de estas celdas.
- (A) Modo interactivo
- Si te fijas en la salida del programa cuando se ejecuta no hay nada. Eso significa que el intérprete no imprime las expresiones a menos que se le indique. Es decir, no es interactivo.
- (B) Modo *script*
- Exactamente, no puedes usar usar las celdas de código activo como una calculadora a menos que utilices ``print``.
Si en algún momento necesitas probar algo de lo que te contamos en el libro no necesitas tener una instalación de Python a mano. Basta que pinches en el icono de la lupa de la parte superior. En el menú que aparece selecciona
.2.6. Un paseo por la sintaxis de Python¶
De momento solo hemos visto un programa, el Hola mundo. Es un clásico que se utiliza para enseñar la estructura básica de un programa en cualquier lenguaje de programación. En Python es extremadamente simple, pero ya se pueden identificar elementos básicos.
print('Hola, Mundo')
La única línea de la que consta el programa es una sentencia. Un programa es una secuencia de sentencias que se ejecutan en orden [1].
[1] | La palabra sentencia es un calco léxico del inglés sentence, que en otros contextos se traduciría como frase. En informática los calcos léxicos son habituales, muy a pesar de los académicos de la RAE. |
Nuestra sentencia es una llamada a función, muy similar al uso
de una función en matemáticas. La función print
imprime sus
argumentos en la salida estándar y no devuelve nada. Las
funciones en matemáticas siempre devuelven algo, y esto también ocurre
en Python, pero existe un valor especial None
que se interpreta
como nada.
Truco
No es lo mismo devolver algo que imprimir algo. Un ejemplo
de ello es la función print
. Imprime sus argumentos,
pero no devuelve nada. Insistiremos mucho en esta idea
porque es una fuente de confusión frecuente.
En este caso solo pasamos un argumento a la función print
. Se
trata de la cadena de texto 'Hola, Mundo'
. Las cadenas de texto
(secuencias de letras) van entre comillas.
Cada vez que llamamos a print
se escribe una nueva línea en la
salida estándar. Por ejemplo:
En algunas ocasiones nos puede interesar que diferentes llamadas a
print
impriman en la misma línea de la salida estándar. Eso se
puede controlar con un argumento opcional de print
llamado
end
.
Este argumento adicional es un argumento nombrado. Es una característica muy interesante para evitar posibles errores en el orden de argumentos.
2.6.1. Asignación¶
La función print
no solo imprime textos. Imprime el resultado de
cualquier expresión. En el siguiente ejemplo utilizamos una
variable para almacenar la persona a la que hay que saludar y
en el print utilizamos el nombre de la variable en lugar de una
persona concreta.
La primera sentencia es una sentencia de asignación. La
asignación sirve para poner nombre a una zona de memoria que
contiene un valor determinado. En este caso la cadena 'Pedro'
se
almacena en memoria y la posición en la que se almacena recibe el
nombre pers
. Puedes verlo en detalle si pulsas en el botón Show
in Codelens. Codelens es una herramienta educativa que permite
entender cómo funciona el programa paso a paso. Utiliza los botones
Forward y Back para avanzar y retroceder. Observa cómo aparece la
variable cuando se ejecuta la sentencia de asignación. Aparece en una
tabla llamada Global frame. Ya veremos eso en detalle más adelante.
2.6.2. Bifurcación¶
A veces es necesario ejecutar determinadas sentencias solo si se cumple una condición. Esto se consigue con una sentencia de bifurcación. La más simple de todas es la sentencia if.
Habrás podido comprobar que el valor de la variable n
determina si
se imprime o no el mensaje. Fíjate que después de la condición hay un
signo :
y que las sentencias que se ejecutan en caso de que se
cumpla están indentadas (con un margen mayor a la izquierda). Prueba
a cambiar el valor de la variable, la condición, los espacios antes
del print
e incluso a poner varios print
que se ejecuten si se
cumple la condición. Verás que Python es bastante relajado con la
forma en que escribes el programa, solo necesita que respetes los
márgenes. Por ejemplo, si quieres ejecutar dos print
en caso de
que se cumpla la condición, tendrás que ponerlos con el mismo margen
ambos. Da igual cuántos espacios, pero que sean los mismos. Por
ejemplo:
2.6.3. Bucles¶
En no pocas ocasiones necesitaremos repetir una serie de operaciones idénticas o casi idénticas. Para repetir están los bucles. El más sencillo de todos es el bucle while:
El bucle while funciona de forma similar a la sentencia if. Evalúa la condición y si se cumple ejecuta las sentencias indentadas justo a continuación. Pero después de ejecutarlas no continúa con la siguiente sentencia, sino que vuelve a evaluar la condición. Así hasta que la condición no se cumpla.
Examina con Show in Codelens la ejecución paso a paso de este
programa. Observa cómo cambia el valor de la variable
i
. ¿Entiendes ahora por qué se les llama variables?
Aunque es un poco pronto para entenderlo completamente quiero también
que pruebes este otro fragmento. Hace lo mismo pero es
significativamente más breve. Utiliza el bucle *for* que es
capaz de recorrer una serie de valores. Cada uno de los valores es
asignando a la variable de control (i
en este caso) y ejecuta las
sentencias indentadas del bucle.
2.7. Trabaja sobre lo visto¶
No te quedes con los ejemplos de este capítulo. Lee ejemplos de otros sitios, prueba tú mismo otros ejemplos, cambia los ejemplos para entenderlos plenamente. A continuación veremos más ejemplos para motivar vuestra propia exploración del lenguaje. No te quedes solo en ellos, prueba y resuelve tus propios problemas.
2.7.1. Ejecución condicional¶
Empecemos dando valores a un par de variables.
Si n no está entre 5 y 10 (ambos incluidos) imprimir un mensaje de error.
Otra forma usando rangos. Los rangos son intervalos en \(\mathbb{Z}\) cerrados por la izquierda y abiertos por la derecha.
Vamos a otro ejemplo. Si m es mayor que n restar n de m.
Si n no es par multiplicar m por 10 y mostrar un mensaje de advertencia.
El operador //
es la división entera (parte entera de la
división) y !=
es el operador distinto. No te agobies con
los operadores, los irás conociendo poco a poco.
Más fácil aún, usando el operador %
(módulo o resto) y el operador
*=
que combina multiplicación y asignación.
Es muy posible que a estas alturas esto te suene a chino. No pasa nada, solo tienes que entender lo que hace. Si no lo entiendes experimenta. En unos meses esto te parecerá tan claro como el agua.
En Python un entero se puede utilizar directamente como condición. Si
su valor es 0 se evaluaría como False
, si es distinto de 0 se
evaluaría como True
. Por tanto se puede hacer todavía más corto así:
¿Cuál de los dos números es más próximo a 100?
Bueno, esta es la primera vez que vemos un else
. Deberíamos
aclarar algo, ¿verdad? La claúsula else
es una parte opcional de
la sentencia if
. Indica que en caso de que no se cumpla la
condición ejecute las sentencias indentadas a continuación. Te
aseguro que no es tan útil como el if
pero a veces puede ser
práctico.
Veamos una vuelta de tuerca más sin repetir el mensaje.
Y todavía podemos acortarlo más, usando el operador ternario
(valor_si_true if condición else valor_si_false).
No lo confundas con la sentencia if
. Es un operador, como la
suma.
Más corto significa menos código que leer y depurar, y eso es muy importante. Pero también puede significar más difícil de entender. Elige tu propio límite entre legibilidad y longitud, pero debes ser consciente de que otros tienen límites diferentes. Es decir, escribe como tú crees que es más legible, pero aprende a leer código escrito con otros criterios.
2.7.2. Abstracción y funciones¶
Volveremos a los bucles en futuras sesiones pero merece la pena detenerse un poco en ellos. A priori parece que los bucles son una forma de abreviar cuando el código es muy repetitivo.
Imagina que no tuvieras bucles en Python. ¿Crees que podrías realizar cualquier operación computable? Piensa en esos cálculos que necesitan días o meses para realizarse. Por ejemplo, la predicción meteorológica. ¿Podría hacerse con un lenguaje sin bucles?
Pista. Piensa en el tiempo que tardaría en ejecutarse un programa sin bucles. ¿De qué depende? ¿Puede depender de los datos? Analiza los casos de un programa lineal y un programa con bifurcaciones (sentencias if).
2.7.3. La tabla de multiplicar¶
El ejemplo de bucle que hemos visto es ciertamente simple. ¿No podríamos haber resuelto el problema así?
Evidentemente es correcto pero solo resuelve un problema muy concreto. Con muy poquito esfuerzo más se pueden resolver problemas parecidos.
Ahora tenemos dos ventajas. Por un lado es mas corto y por tanto mas fácil de cambiar. Por otro lado no necesitamos conocer los resultados de las expresiones. Es lo lógico, a fin de cuentas estamos usando un computador.
Compara esta solución con el ejemplo tabla-del-3
. Es
ciertamente parecido, pero en el ejemplo anterior podemos cambiar la
tabla simplemente cambiando el 3 asignado a tabla
. La propiedad
que permite manejar casos similares con el mismo fragmento de programa
se llama abstracción. No es una simple comodidad, es
imprescindible para poder resolver problemas complejos con un
computador.
Uno de los mecanismos más poderosos de abstracción son las funciones. Permiten poner un nombre a un fragmento de programa y además permiten definir parámetros que pueden cambiar en cada uso. Es como si definiéramos nuestro propio lenguaje. Volveremos a ellas en el próximo capítulo, pero veamos cómo queda nuestro ejemplo usando una función.
Y podemos usarla con una expresión de llamada a función, igual que la
propia función print
.
Es posible que pienses que esta versión es la más larga, y tiene las
mismas ventajas que la primera versión tabla-del-3
. Una
ventaja de la función es que ya no es necesario copiar el texto del
programa para imprimir otra tabla. Basta usar la función como si se
tratara de una nueva sentencia.
Ya está bien por ahora, pero no creas que es la única forma de resolver el problema. En Python siempre hay más formas de escribir las cosas. Por ejemplo, ésto sería más cercano a lo que haría un programador experimentado:
No te preocupes si no lo entiendes ahora. Es más importante saber resolver problemas con un ordenador que conocer el lenguaje al detalle.