ntroducció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ón a la programación
con Python
Andrés Marzal
Isabel Gracia
Departamento de Lenguajes y Sistemas Informáticos
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:
[email protected]
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
Andrés Marzal/sabel Gracia - SBN: 978-84-692-5869-9
1
ntroducción a la programación con Python - UJ
˂˂IntroducciónalaprogramaciónconPython˃˃e ˂˂IntroducciónalaprogramaciónconC˃˃
desarrollaneltemariodelaasignatura ˂˂Metodologíaytecnologíadelaprogramación˃˃de
lastitulacionesdeIngenieríaInformáticaeIngenieríaTécnicaenInformáticadeGestión
delaUniversitatJaumeI.Enellasepretendeenseñaraprogramary,adiferenciadelo
queesusualencursosintroductoriosalaprogramación,seproponeelaprendizajecon
doslenguajesdeprogramación:PythonyC.
¿Porquédoslenguajesdeprogramación?PythonyCsonbiendiferentes.Elprimero
esunlenguajedemuyaltonivelquepermiteexpresaralgoritmosdeformacasidirecta
(hallegadoaconsiderarse ˂˂pseudocódigoejecutable˃˃)yhemoscomprobadoquesetrata
de un lenguaje particularmente adecuado para la enseñanza de la programación. Esta
impresiónsevecorroboradaporlaadopcióndePythoncomolenguajeintroductorioen
otrasuniversidades.EllenguajeCexigeunagranatenciónamultituddedetallesque
dificultanlaimplementacióndealgoritmosaunestudiantequeseenfrentaporprimera
vezaldesarrollodeprogramas.Noobstante,Csiguesiendounlenguajedeprogramación
dereferenciaydebeformarpartedelcurrículumdetodoinformático:suproximidadal
computadornospermitecontrolarcongranprecisiónelconsumoderecursoscomputacio-
nales.AprenderPythonantesqueCpermiteestudiarlasestructurasdecontrolydedatos
básicasconunaltoniveldeabstraccióny,así,entendermejorquésupone,exactamente,
la mayor complejidad de la programación en C y hasta qué punto es mayor el grado
decontrolquenosotorga.Porejemplo,unavezsehanestudiadolistasenPython,su
implementaciónenCpermitealestudiantenoperderdevistaelobjetivoúltimo:cons-
truirunaentidadconciertoniveldeabstracciónusandounasherramientasconcretas(los
punteros).Deesemodoseevitaunadesafortunadaconfusiónentreestructurasdinámicas
ypunterosqueesfrecuentecuandoéstasseestudianúnicamentealaluzdeunlenguaje
comoC.Enciertomodo,pues,PythonyCsecomplementanenelaprendizajeyofrecen
unavisiónmásricaycompletadelaprogramación.Lassimilitudesydiferenciasentre
ambospermitenalestudianteinferirmásfácilmentequéesfundamentalyquéaccesorio
oaccidentalaldiseñarprogramasenunlenguajedeprogramacióncualquiera.
¿Yporquéotrolibrodetextointroductorioalaprogramación?Ciertamentehaymuchos
libros que enseñan a programar desde cero. Creemos que estos dos libros de texto se
diferenciadeellostantoenelhechodeestudiarsecuencialmentedoslenguajescomoen
laformaenqueseexponenydesarrollanlosconocimientos.Hemosprocuradoadoptar
siempre el punto de vista del estudiante y presentar los conceptos y estrategias para
diseñarprogramasbásicospasoapaso,incrementalmente.Laexperienciadocentenosha
idomostrandotodaunaserielíneasderazonamientoinapropiadas,erroresyviciosen
losquecaenmuchosestudiantes.Eltextotratadeexponer,conmayoromenorfortuna,
esosrazonamientos,erroresyviciosparaqueelestudiantelostengapresentesyprocure
evitarlos.Así,eneldesarrollodealgunosprogramasllegamosaofrecerversioneserróneas
para, acto seguido, estudiar sus defectos y mostrar una versión corregida. Los apuntes
estánrepletosdecuadrosquepretendenprofundizarenaspectosmarginales,llamarla
atención sobre algún extremo, ofrecer algunas pinceladas de historia o, sencillamente,
desviarsedelosustancialconalgunadigresiónquepodríaresultarmotivadoraparael
1
estudiante.
Hemosderecalcarqueestelibropretendeenseñaraprogramarynoesunmanual
exhaustivo sobre el lenguaje de programación Python. Son particularmente reseñables
dos omisiones: los diccionarios y las clases. No forman parte de esta edición (aunque
posiblementeseincluiránenotraposterior)porquehemospreferidocentrarnosenaquellos
aspectosquetantoPythoncomoCpresentanencomún.Laorientaciónaobjetossepuede
tratar a partir del material expuesto en estos volúmenes, pero hubiera resultado difícil
incluirestoscontenidosenelvolumendePythonynopodertratarlosadecuadamenteen
elvolumendedicadoaC.
Queremosaprovecharparadarunconsejoalosestudiantesquenonoscansamosde
repetir:esimposibleaprenderaprogramarlimitándosealeerunosapuntesoaseguir
pasivamenteunaexplicaciónenclase(especialmentesielperíododeestudioseconcen-
tra en una o dos semanas). Programar al nivel propio de un curso introductorio no es
particularmentedifícil,peroconstituyeunaactividadintelectualradicalmentenuevapara
losestudiantes.Esnecesariodarseunaoportunidadparairasentandolosconocimien-
tosylasestrategiasdediseñodeprogramas(yasí,superarelcurso).Esaoportunidad
requieretiempoparamadurar... ytrabajo,muchotrabajo;poresoeltextoofrecemásde
cuatrocientosochentaejercicios.Sólotrashaberseenfrentadoabuenapartedeellosse
estarápreparadoparademostrarquesehaaprendidolonecesario.
Hay centenares de diferencias entre las dos primeras ediciones (publicadas como
apuntesenlaUniversidadJaumeIyenformatoelectrónicoenInternet)yésta.Nosólo
hemoscorregidoerratas(yerrores),hemosañadidotambiénnuevosejemplos,modificado
otros, preparado nuevos ejercicios, reubicado ejercicios para que aparezcan en lugares
quehemosjuzgadomásapropiados,etc.Losprogramassepresentanconunatipografía
que, creemos,
facilita notablemente la lectura. El documento PDF ofrece, además, la
posibilidaddedescargarcómodamenteeltextodelosprogramas(quesepuedendescargar
de http://ocw.uji.es).Esperamosqueestaposibilidadsetraduzcaenunmayoránimo
delestudianteparaexperimentarconlosprogramas.
Conveniostipográficos
Hemos tratado de seguir una serie de convenios tipográficos a lo largo del texto. Los
programas,porejemplo,semuestranconfondogris,así:
1 print ’!Hola,␣mundo!’
Porreglageneral,laslíneasdelprogramaaparecennumeradasamanoizquierda.Esta
numeracióntieneporobjetofacilitarlareferenciaapuntosconcretosdelprogramayno
debereproducirseenelficherodetextosisecopiaelprograma.
Cuandosequieredestacarelnombredelficheroenelqueresideunprograma,se
disponeesteenunabarraencimadelcódigo:
1 print ’!Hola,␣mundo!’
SisetrabajaconlaversiónelectrónicadellibroenformatoPDF(disponibleenla
páginaweb http://ocw.uji.es)esposibleaccedercómodamentealtextodelospro-
gramas.Paraello,bastacondesempaquetarelfichero programas.tgz(o programas.zip)
enelmismodirectorioenelqueestéubicadoeldocumentoPDF.Losprogramasaccesibles
tienenuniconoquerepresentaundocumentoescritoenlaesquinasuperiorizquierda.
Juntoaliconoapareceelnombrerealdelfichero:comoofrecemosvariasversionesdeun
mismoprograma,noshemosvistoobligadosaseguirunesquemadenumeraciónquemodi-
ficaelpropionombredelfichero.Laprimeraversióndeunficherollamado hola mundo.py
es hola mundo 1.py,lasegunda hola mundo 2.py,yasísucesivamente.
IntroducciónalaprogramaciónconPython
Andrés Marzal/sabel Gracia - SBN: 978-84-692-5869-9
hola mundo.py
2
2
ntroducción a la programación con Python - UJ
cUJI
hola mundo 1.py
hola mundo.py
!Hola, mundo!
hola mundo.py
hola mundo.py
E hola mundo.py E
$ python hola_mundo.py ↱
!Hola, mundo!
1 print ’!Hola,’, ’mundo!’
Si,aunquehayavariasversiones,noapareceunnúmeroalfinaldelnombredelfichero
descargable,seentiendequeesaeslaversióndefinitiva.
1 print ’!Hola,␣mundo!’
Alpincharenelicono,seabreunficherodetextoconelnavegadorweboeditordetextos
queseindiqueenlaspreferenciasdelvisualizadordedocumentosPDF.
Cuandoelprogramacontienealgúnerrorgrave,aparecenunparderayosflanqueando
alnombredelprograma:
1 rint ’!Hola,␣mundo!’
Algunos programas no están completos y, por ello, presentan alguna deficiencia. No
obstante,hemosoptadopornomarcarloscomoerróneoscuandoéstosevolucionabanen
elcursodelaexposición.
Lainformaciónquesemuestraporpantallaaparecesiemprerecuadrada.Elresultado
deejecutar hola mundo.pysemostraráasí:
En ocasiones mostraremos las órdenes que deben ejecutarse en un intérprete de
órdenesUnix.Elpromptdelintérpreteserepresentaráconunsímbolodedólar:
Lapartequedebeteclearelusuariooelprogramadorsemuestrasiempreconunfondo
gris.Elretornodecarroserepresentaexplícitamenteconelsímbolo ↱.
LassesionesinteractivasdelintérpretedePythontambiénsemuestranrecuadradas.
El prompt primario del intérprete Python se muestra con los caracteres ˂˂>>>˃˃ y el
secundariocon ˂˂...˃˃.Lasexpresionesysentenciasquetecleaelprogramadorsedestacan
confondogris.
>>> if ’Hola’ == ’mundo’: ↱
print ’si’ ↱
... e
Comentarios de: Introducción a la programación con Python (0)
No hay comentarios