Esta sección presenta un contexto muy resumido de Python, algunas de sus
ventajas y desventajas, y la configuración usada para producir el
material del curso. Además indica cómo interactuarán los programas con la entrada y la salida estándar, y cómo se ejecutarán los programas desde la terminal del sistema. Finalmente, identifica la metodología adoptada durante el curso.
ContextoPython fue creado a principios de los años 90 por Guido van Rossum (Stichting Mathematisch Centrum -CWI-, Paises Bajos) como sucesor de un lenguaje llamado ABC. De acuerdo con la página oficial del lenguajePython is a programming language that lets you work quickly and integrate systems more effectively.
Ventajas y desventajasPython es un lenguaje de programación muy versátil. Sin embargo, como
todo lenguaje de programación, Python tiene ventajas y desventajas, las
cuales lo hacen un excelente candidato para algunos usos y no tan
conveniente para algunos otros usos.
Configuración
Python: $ python3 --version Python 3.3.2 Emacs:
$ emacs --version Copyright (C) 2013 Free Software Foundation, Inc. GNU Emacs comes with ABSOLUTELY NO WARRANTY. You may redistribute copies of Emacs under the terms of the GNU General Public License. For more information about these matters, see the file named COPYING. Linux:
$ uname -r 3.15.4-200.fc20.x86_64 Ejecución de ProgramasUn programa que contenga código fuente de Python tendrá la extensión La ejecución de un programa se puede hacer al menos de dos maneras: invocando directamente al intérprete de Python o delegando esta invocación al sistema operativo. En este curso usaremos la primera opción. El intérprete de Python se puede usar con o sin interacción. Supongamos que tenemos un programa en el archivo $ python3 fibonacci.py ... Para ejecutar el programa con interacción usamos el siguiente comando: $ python3 -i fibonacci.py >>> La diferencia neta es que con en el modo interactivo, el intérprete ejecuta el programa en el archivo y, una vez termina su ejecución, el usuario puede interactuar con el sistema (por ejemplo, invocando funciones definidas en el programa, etc.). Entrada y SalidaLos programas usarán la entrada estándar y la salida estándar. Esto
quiere decir que el curso NO cubrirá material (por lo menos en esta
versión) sobre archivos. Para interactuar con la entrada estándar usaremos el objeto from sys import stdin Suponiendo que la información a ser procesada siempre será suministrada en forma de texto y no como información en formato binario, el objeto stdin permite leer la entrada estándar caracter por caracter (stdin.read(1) ), línea por línea (stdin.readline() ) o iterando sobre cada una de las líneas de la entrada (stdin.readlines() ).Así parezca una contradicción, en su mayoría usaremos archivos de
texto para probar el código desarrollado. La forma de hacer esto es redireccionando la entrada estándar desde un archivo. Por ejemplo, si nuestro programa en $ python3 fibonacci.py < fibonacci.in ...
El ejecutar un programa, se usará la salida estándar para imprimir los resultados que nos interesen. En particular, dentro del programa se usará el comando print() . La salida de un programa puede
ser muy larga y extensa, y entonces comparar los resultados obtenidos
con los esperados puede ser difícil. De forma similar, podemos
redireccionar la salida estándar a un archivo. En el ejemplo anterior,
podemos guardar los resultados en un archivo, digamos fibonacci.out :$ python3 fibonacci.py < fibonacci.in > fibonacci.out Una vez los resultados de una ejecución estén en un archivo, estos se
puede comparar automáticamente con los resultados esperados, suponiendo
que estos están guardados en un archivo de texto (y con el formato
esperado), usando el programa $ diff fibonacci.out correct.out MetodologíaEste curso está diseñado para "aprender haciendo" y no pretende reinvetar la rueda. Para
aprender haciendo, abordaremos problemas pequeños del estilo de
programación competitiva en los cuales se presenta una situación
problemática que se puede resolver usando un algoritmo, se describe el
formato de los datos de entrada y el formato de los datos de salida.
Para cada problema abordado o asignado habrán casos de prueba
disponibles en el format Este curso no pretende reinventar la rueda en el sentido en que habrán numerosas referencias a documentación, tutoriales y ejemplos en línea cuando sea necesario. Por ejemplo, para aprender los constructos básicos del lenguaje, el curso directamente usa material de terceros. En particular, gran parte del material usado a modo de referencia hace parte del tutorial del lenguaje, que a su vez hace parte de la documentación oficial del lenguaje. Los problemas algorítmicos abordados en el curso son parte de un banco de problemas de programación competitiva. Usaremos problemas cuyos enunciados se encuentran en UVa Online Judge, pero las implementaciones en Python no serán validadas contra el robot de juzgamiento allí disponible dado que Python no ha sido aún adoptado por este sitio como lenguaje de programación de competencia. En internet pueden encontrar muchos sitios que aceptan Python como lenguaje de programación (TopCoder, CodeForces, SphereOnlineJudge, por mencionar algunos). |