Table Of Contentntroducción
a la programación
con Python
Andrés Marzal
sabel Gracia
Departamento De lenguajes y sistemas informáticos
Codis d’assignatura 04 i G04
Andrés Marzal/sabel Gracia - SBN: 978-84-692-5869-9 ntroducción a la programación con Python - UJ
Introducci´on a la programaci´on
con Python
Andr´es Marzal Isabel Gracia
Departamento de Lenguajes y Sistemas Inform´aticos
Universitat Jaume I
Edita: Publicacions de la Universitat Jaume I. Servei de Comunicació i Publicacions
Campus del Riu Sec. Edifici Rectorat i Serveis Centrals. 12071 Castelló de la Plana
http://www.tenda.uji.es e-mail: publicacions@uji.es
Col·lecció Sapientia, 23
www.sapientia.uji.es
ISBN: 978-84-692-5869-9
Aquest text està subjecte a una llicència Reconeixement-NoComercial-CompartirIgual de
Creative Commons, que permet copiar, distribuir i comunicar públicament l’obra sempre
que especifique l’autor i el nom de la publicació i sense objectius comercials, i també per-
met crear obres derivades, sempre que siguen distribuïdes amb aquesta mateixa llicència.
http://creativecommons.org/licenses/by-nc-sa/2.5/es/deed.ca
Andrés Marzal/Isabel Gracia - ISBN: 978-84-692-5869-9 II Introducción a la programación con Python - UJI
Prefacio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Andrés Marzal/sabel Gracia - SBN: 978-84-692-5869-9 ntroducción a la programación con Python - UJ
Andrés Marzal/sabel Gracia - SBN: 978-84-692-5869-9 V ntroducción a la programación con Python - UJ
Andrés Marzal/sabel Gracia - SBN: 978-84-692-5869-9 V ntroducción a la programación con Python - UJ
Andrés Marzal/sabel Gracia - SBN: 978-84-692-5869-9 V ntroducción a la programación con Python - UJ
˂˂ ˃˃ ˂˂ ˃˃
Prefacio
˂˂ ˃˃
Introducci´on a la programaci´on con Python e Introducci´on a la programaci´on con C
desarrollaneltemariodelaasignatura Metodolog´ıaytecnolog´ıadelaprogramaci´on de
las titulaciones de Ingenier´ıa Informa´tica e Ingenier´ıa T´ecnica en Informa´tica de Gesti´on
de la Universitat Jaume I. En ella se pretende ensen˜ar a programar y, a diferencia de lo
que es usual en cursos introductorios a la programaci´on, se propone el aprendizaje con
dos lenguajes de programaci´on: Python y C.
˂˂ ˃˃
¿Por qu´e dos lenguajes de programaci´on? Python y C son bien diferentes. El primero
es un lenguaje de muy alto nivel que permite expresar algoritmos de forma casi directa
(ha llegado a considerarse pseudoc´odigo ejecutable ) y hemos comprobado que se trata
de un lenguaje particularmente adecuado para la ensen˜anza de la programaci´on. Esta
impresi´on se ve corroborada por la adopci´on de Python como lenguaje introductorio en
otras universidades. El lenguaje C exige una gran atenci´on a multitud de detalles que
dificultan la implementaci´on de algoritmos a un estudiante que se enfrenta por primera
vez al desarrollo de programas. No obstante, C sigue siendo un lenguaje de programaci´on
de referencia y debe formar parte del curr´ıculum de todo informa´tico: su proximidad al
computador nos permite controlar con gran precisi´on el consumo de recursos computacio-
nales.AprenderPythonantesqueCpermiteestudiarlasestructurasdecontrolydedatos
ba´sicas con un alto nivel de abstracci´on y, as´ı, entender mejor qu´e supone, exactamente,
la mayor complejidad de la programaci´on en C y hasta qu´e punto es mayor el grado
de control que nos otorga. Por ejemplo, una vez se han estudiado listas en Python, su
implementaci´on en C permite al estudiante no perder de vista el objetivo u´ltimo: cons-
truir una entidad con cierto nivel de abstracci´on usando unas herramientas concretas (los
punteros). De ese modo se evita una desafortunada confusi´on entre estructuras dina´micas
y punteros que es frecuente cuando ´estas se estudian u´nicamente a la luz de un lenguaje
como C. En cierto modo, pues, Python y C se complementan en el aprendizaje y ofrecen
una visi´on ma´s rica y completa de la programaci´on. Las similitudes y diferencias entre
ambos permiten al estudiante inferir ma´s fa´cilmente qu´e es fundamental y qu´e accesorio
o accidental al disen˜ar programas en un lenguaje de programaci´on cualquiera.
¿Yporqu´eotrolibrodetextointroductorioalaprogramaci´on?Ciertamentehaymuchos
libros que ensen˜an a programar desde cero. Creemos que estos dos libros de texto se
diferencia de ellos tanto en el hecho de estudiar secuencialmente dos lenguajes como en
la forma en que se exponen y desarrollan los conocimientos. Hemos procurado adoptar
siempre el punto de vista del estudiante y presentar los conceptos y estrategias para
disen˜ar programas ba´sicos paso a paso, incrementalmente. La experiencia docente nos ha
ido mostrando toda una serie l´ıneas de razonamiento inapropiadas, errores y vicios en
los que caen muchos estudiantes. El texto trata de exponer, con mayor o menor fortuna,
esos razonamientos, errores y vicios para que el estudiante los tenga presentes y procure
evitarlos.As´ı,eneldesarrollodealgunosprogramasllegamosaofrecerversioneserr´oneas
para, acto seguido, estudiar sus defectos y mostrar una versi´on corregida. Los apuntes
esta´n repletos de cuadros que pretenden profundizar en aspectos marginales, llamar la
atenci´on sobre algu´n extremo, ofrecer algunas pinceladas de historia o, sencillamente,
desviarse de lo sustancial con alguna digresi´on que podr´ıa resultar motivadora para el
Andrés Marzal/sabel Gracia - SBN: 978-84-692-5869-9 1 ntroducción a la programación con Python - UJ
1
estudiante.
Hemos de recalcar que este libro pretende ensen˜ar a programar y no es un manual
exhaustivo sobre el lenguaje de programaci´on Python. Son particularmente resen˜ables
dos omisiones: los diccionarios y las clases. No forman parte de esta edici´on (aunque
posiblementeseincluira´nenotraposterior)porquehemospreferidocentrarnosenaquellos
aspectosquetantoPythoncomoCpresentanencomu´n.Laorientaci´onaobjetossepuede
tratar a partir del material expuesto en estos volu´menes, pero hubiera resultado dif´ıcil
incluir estos contenidos en el volumen de Python y no poder tratarlos adecuadamente en
el volumen dedicado a C.
Queremos aprovechar para dar un consejo a los estudiantes que no nos cansamos de
repetir: es imposible aprender a programar limita´ndose a leer unos apuntes o a seguir
pasivamente una explicaci´on en clase (especialmente si el per´ıodo de estudio se concen-
tra en una o dos semanas). Programar al nivel propio de un curso introductorio no es
particularmente dif´ıcil, pero constituye una actividad intelectual radicalmente nueva para
los estudiantes. Es necesario darse una oportunidad para ir asentando los conocimien-
tos y las estrategias de disen˜o de programas (y as´ı, superar el curso). Esa oportunidad
requiere tiempo para madurar... y trabajo, mucho trabajo; por eso el texto ofrece ma´s de
cuatrocientos ochenta ejercicios. S´olo tras haberse enfrentado a buena parte de ellos se
estara´ preparado para demostrar que se ha aprendido lo necesario.
Hay centenares de diferencias entre las dos primeras ediciones (publicadas como
apuntes en la Universidad Jaume I y en formato electr´onico en Internet) y ´esta. No s´olo
hemos corregido erratas (y errores), hemos an˜adido tambi´en nuevos ejemplos, modificado
otros, preparado nuevos ejercicios, reubicado ejercicios para que aparezcan en lugares
que hemos juzgado ma´s apropiados, etc. Los programas se presentan con una tipograf´ıa
queh,tctrpe:e/m/oosc, wfa.cuijliita.ensotablemente la lectura. El documento PDF ofrece, adema´s, la
posibilidaddedescargarc´omodamenteeltextodelosprogramas(quesepuedendescargar
de ).Esperamosqueestaposibilidadsetraduzcaenunmayora´nimo
del estudiante para experimentar con los programas.
Convenios tipogr´aficos
Hemos tratado de seguir una serie de convenios tipogra´ficos a lo largo del texto. Los
1 ’!Hola,␣mundo!’
programas, por ejemplo, se muestran con fondo gris, as´ı:
print
Por regla general, las l´ıneas del programa aparecen numeradas a mano izquierda. Esta
numeraci´on tiene por objeto facilitar la referencia a puntos concretos del programa y no
debe reproducirse en el fichero de texto si se copia el programa.
Cuando se quiere destacar el nombre del fichero en el que reside un programa, se
hola mundo.py
dispone este en una barra encima del c´odigo:
1 ’!Hola,␣mundo!’
print
http://ocw.uji.es
programas.tgz programas.zip
Si se trabaja con la versi´on electr´onica del libro en formato PDF (disponible en la
pa´gina web ) es posible acceder c´omodamente al texto de los pro-
gramas.Paraello,bastacondesempaquetarelfichero (o )
enelmismodirectorioenelqueest´eubicadoeldocumentoPDF.Losprogramasaccesibles
tienen un icono que representa un documento escrito en la esquina superior izquierda.
hola mundo.py
Junto al icono aparece el nombre real del fichero: como ofrecemos varias versiones de un
hola mundo 1.py hola mundo 2.py
mismoprograma,noshemosvistoobligadosaseguirunesquemadenumeraci´onquemodi-
ficaelpropionombredelfichero.Laprimeraversi´ondeunficherollamado
es , la segunda , y as´ı sucesivamente.
Andrés Marzal/sabel Gracia - SBN: 978-84-692-5869-9 2 ntroducción a la programación con Python - UJ
Introducci´onalaprogramaci´onconPython (cid:31)cUJI
2
hola mundo.py
holamundo1.py
1 ’!Hola,’,’mundo!’
print
Si, aunque haya varias versiones, no aparece un nu´mero al final del nombre del fichero
hola mundo.py
holamundo.py
descargable, se entiende que esa es la versi´on definitiva.
1 ’!Hola,␣mundo!’
print
Alpincharenelicono,seabreunficherodetextoconelnavegadorweboeditordetextos
que se indique en las preferencias del visualizador de documentos PDF.
Cuandoelprogramacontienealgu´nerrorgrave,aparecenunparderayosflanqueando
E hola mundo.py E
al nombre del programa:
1 ’!Hola,␣mundo!’
rint
Algunos programas no esta´n completos y, por ello, presentan alguna deficiencia. No
obstante, hemos optado por no marcarlos como err´oneos cuando ´estos evolucionaban en
el curso de hlaoleaxpmosuincdi´oon..py
La informaci´on que se muestra por pantalla aparece siempre recuadrada. El resultado
!Hola, mundo!
de ejecutar se mostrara´ as´ı:
En ocasiones mostrare↱mos las ´ordenes que deben ejecutarse en un int´erprete de
$ python hola_mundo.py
´ordenes Unix. El prompt del int´erprete se representara´ con un s´ımbolo de d´olar:
!Hola, mundo!
↱
La parte que debe teclear el usuario o el programador se muestra siempre con un fondo
gris. El retorno de carro se representa expl´ıcitamente con el s´ımbolo . ˂˂>>>˃˃
Las sesione˂s˂.i.n.te˃˃ractivas del int´erprete de Python tambi´en se muestran recuadradas.
El prompt primario del int´erprete Python se muestra con los caracteres y el
secundariocon .Lasexpres↱ionesysentenciasquetecleaelprogramadorsedestacan
>>> ’Hola,’+’␣’+’mundo!’
con fondo gris.
’!Hola, mundo!’
↱
>>> ’Hola’==’mundo’:
↱
... ’si’
↱
... :
if
↱
... ’no’
print
↱
...
else
no
print
Agradecimientos
˂˂ ˃˃
Este texto es fruto de la experiencia docente de todo el profesorado de las asignaturas de
Metodolog´ıaytecnolog´ıadelaprogramaci´on ysehaenriquecidoconlasaportaciones,
comentarios y correcciones de muchos profesores del departamento de Lenguajes y Sis-
temas Informa´ticos de la Universitat Jaume I de Castell´o: Juan Pablo Aibar Ausina, Rafael
Berlanga Llavor´ı, Antonio Castellanos L´opez, Pedro Garc´ıa Sevilla, Mar´ıa Dolores Llid´o
Escriva´, David Llorens Pin˜ana, Jos´e Luis Llopis Borra´s, Juan Miguel Vilar Torres, V´ıctor
Manuel Jim´enez Pelayo y Ram´on Mollineda Ca´rdenas. Para todos ellos, nuestro agrade-
cimAnideréns tMoa.rzEal/lsaabegl Graracdiae -c iSmBNi: e97n8t-o84-a692D-5a86v9i-d9 Llorens Pin˜ana3es doble por desarrollar,natrdodeumccia´óns a, lea plrogramación con Python - UJ
Introducci´onalaprogramaci´onconPython (cid:31)cUJI
3