Documente Academic
Documente Profesional
Documente Cultură
enasignaturasdecienciasaplicadas
A N TER IO R |S IG U IEN T E
3.LenguajesdeProgramacin
TABLADECONTENIDOS
Autores
Autores:JosMaraHerreraFernndez,LuisMiguelSnchezBrea
Contenidosdeestecaptulo:
Quesnuevo
Licencia
Caractersticasdeprogramacin
Elementosdellenguaje
Comentarios
Variables
Tiposdedatos
ListasyTuplas
Diccionarios
Conjuntos
Listasporcomprensin
Funciones
Clases
Condicionales
Buclefor
Buclewhile
Mdulos
Sistemadeobjetos
Existennumerososmanualesdeprogramacin,ademsdemagnificosyextensosmanualesoficiales.Sirvadeejemplo,
http://pyspanishdoc.sourceforge.net/tut/tut.html, una amplia gua en espaol que a pesar de ser escrita en 2005 nos
proporcionar toda la informacn que necesitamos. Nosotros en esta seccin nos limitaremos a aportar un resumen
tomado de la wikipedia para que el lector pueda seguir el resto del libro de forma cmoda aunque recomendamos
visitar tanto la fuente original de la informacin, http://es.wikipedia.org/wiki/Python, como la gua que acabamos de
mencionar.
3.1.Caractersticasdeprogramacin
Descargas
Referencias
1.Introduccin
2.PuestaenMarcha
3.LenguajesdeProgramacin
4.MdulosCientficos
5.EcuacionesdeMaxwellenelvaco
6.Polarizacin
7.Interaccinradiacinmateria
8.ndicederefraccin:modelomicroscpico
9.EcuacionesdeFresnel
10.Pulsosdeluz
11.Interferencias
12.Mdulosdeptica
13.Difraccinencampocercano
14.Difraccinencampolejano
15.RedesdeDifraccin
16.Procesadopticodelainformacin
BSQUEDA
Nohacefaltadefinirlosdatos.
Lasfuncionessealmacenanenmdulos,quepuedenserdeltamaoquedeseemos.
Esnecesariodeclararlosmodulosylasfuncionesdeotrosmdulosquesevanaimplementar.
Hayinfinidaddemdulosdecualquierareadeinters.
3.1.1.Elementosdellenguaje
Pythonfuediseadoparaserledoconfacilidad.Unadesuscaractersticaseselusodepalabrasdondeotroslenguajes
utilizaran smbolos. Por ejemplo, los operadores lgicos !, || y && en Python se escriben not, or y and,
respectivamente.
Elcontenidodelosbloquesdecdigo(bucles,funciones,clases,etc.)esdelimitadomedianteespaciosotabuladores,
conocidoscomoindentacin,antesdecadalneaderdenespertenecientesalbloque.Pythonsediferenciaasdeotros
lenguajesdeprogramacinquemantienencomocostumbredeclararlosbloquesmedianteunconjuntodecaracteres,
normalmente entre llaves {}. Se pueden utilizar tanto espacios como tabuladores para identar el cdigo, pero se
recomiendanomezclarlos.
Debidoalsignificadosintcticodelaindentacin,unainstruccindebeestarcontenidaenlnea.Noobstante,sipor
legibilidadsequieredividirlainstruccinenvariaslneas,aadiendounabarrainvertidaalfinaldeunalnea,seindica
quelainstruccincontinaenlasiguiente.
lista=['valor1','valor2','valor3']
cadena='Estoesunacadenabastantelarga'
queesequivalentea
lista=['valor1','valor2'\
,'valor3']
cadena='Estoesunacadena'\
'bastantelarga'
3.1.2.Comentarios
Ira
Introduzcalostrminosdebsquedaounnombrede
mdulo,claseofuncin.
Loscomentariossepuedenponerdedosformas.Laprimeraymsapropiadaparacomentarioslargosesutilizandola
notacincomentario,tresapostrofesdeaperturaytresdecierre.
'''
ComentariomslargoenunalneaenPython
'''
Lasegundanotacinutilizaelsmbolo#delantedelalneaacomentar,
print"Holamundo"#Tambinesposibleaadiruncomentarioalfinaldeunalneadecdigo
El intrprete no tiene en cuenta los comentarios, lo cual es til si deseamos poner informacin adicional en nuestro
cdigocomo,porejemplo,unaexplicacinsobreelcomportamientodeunaseccindelprograma.
3.1.3.Variables
Lasvariablessedefinendeformadinmica,loquesignificaquenosetienequeespecificarculessutipodeantemano
y puede tomar distintos valores en otro momento, incluso de un tipo diferente al que tena previamente. Se usa el
smbolo=paraasignarvalores.
x=1
x="Estavariableesunacadena"#Estoesposibleporquelostipossonasignadosdinmicamente.
3.1.4.Tiposdedatos
Lostiposdedatossepuedenresumirenestatabla:
Tipo
Clase
Notas
Ejemplo
str
Cadena
Inmutable
Cadena
unicode Cadena
VersinUnicodedestr
uCadena
list
Secuencia
Mutable,puedecontenerobjetosdediversostipos
[4.0,Cadena,True]
tuple
Secuencia
Inmutable,puedecontenerobjetosdediversostipos
(4.0,Cadena,True)
set
Conjunto
Mutable,sinorden,nocontieneduplicados
set([4.0,Cadena,True])
frozenset Conjunto
Inmutable,sinorden,nocontieneduplicados
frozenset([4.0,Cadena,True])
dict
Mapping
Grupodeparesclave:valor
{key1:1.0,key2:False}
int
Nmeroentero
long
Nmeroentero
Precisinarbitraria
float
Nmerodecimal Comaflotantededobleprecisin
42L456966786151987643L
3.1415927
complex Nmero
complejo
Parterealyparteimaginariaj.
(4.5+3j)
bool
Valorbooleanoverdaderoofalso
TrueoFalse
Booleano
Mutable:sisucontenido(odichovalor)puedecambiarseentiempodeejecucin.
Inmutable:sisucontenido(odichovalor)nopuedecambiarseentiempodeejecucin.
3.1.5.ListasyTuplas
Paradeclararunalistaseusanloscorchetes[],encambio,paradeclararunatuplaseusanlosparntesis().En
ambasloselementosseseparanporcomas,yenelcasodelastuplasesnecesarioquetengancomomnimouna
coma.
Tanto las listas como las tuplas pueden contener elementos de diferentes tipos. No obstante las listas suelen
usarseparaelementosdelmismotipoencantidadvariablemientrasquelastuplassereservanparaelementos
distintosencantidadfija.
Paraaccederaloselementosdeunalistaotuplaseutilizaunndiceentero(empezandopor0,nopor1).Se
puedenutilizarndicesnegativosparaaccederelementosapartirdelfinal,porejemploparaaccederalltimo
ndicedeberamosdeusar1.
Las listas se caracterizan por ser mutables, es decir, se puede cambiar su contenido en tiempo de ejecucin,
mientrasquelastuplassoninmutablesyaquenoesposiblemodificarelcontenidounavezcreada.
Listas:
>>>lista=["abc",42,3.1415]#Definicindeunalistaconelementosdedistintotipo.
>>>lista[0]#Accederaunelementoporsundice,enestecasoalprimero.
'abc'
>>>lista[1]#Accederaunelementousandounndicenegativo,enestecasoelltimo.
3.1415
>>>lista.append(True)#Aadirunelementoalfinaldelalista.
>>>lista
['abc',42,3.1415,True]
>>>dellista[3]#Borraunelementodelalistausandounndice(enestecaso:True).
>>>lista
['abc',42,3.1415]
>>>lista[0]="xyz"#Reasignarelvalordelprimerelementodelalista.
>>>lista
['xyz',42,3.1415]
>>>lista[0:2]#Mostrarloselementosdelalistadelndice"0"al"2"(sinincluiresteltimo).
['xyz',42]
>>>lista_anidada=[lista,[True,42L]]#Esposibleanidarlistas
>>>lista_anidada
[['xyz',42,3.1415],[True,42L]]
>>>lista_anidada[1][0]#Accederaunelementodeunalistadentrodeotralista(delsegundoelemento,mostrarelprimerelemento).
True
Tuplas:
>>>tupla=("abc",42,3.1415)#Definicindeunatuplaconelementosdedistintotipo.
>>>tupla[0]#Accederaunelementoporsundiceenestecasoalprimero.
'abc'
>>>deltupla[0]#Noesposibleborrar(niaadir)unelementoenunatupla,loqueprovocarunaexcepcin.
(Excepcin)
#Tampocoesposiblereasignarelvalordeunelementoenunatupla,loquetambinprovocarunaexcepcin.
>>>tupla[0]="xyz"
(Excepcin)
>>>tupla[0:2]#Mostrarloselementosdelatupladelndice"0"al"2"(sinincluiresteltimo).
('abc',42)
>>>tupla_anidada=(tupla,(True,3.1415))#Tambinesposibleanidartuplas.
>>>1,2,3,"abc"#Estotambinesunatupla,aunqueesrecomendableponerlaentreparntesis(recuerdaquerequiere,almenos,unacoma).
(1,2,3,'abc')
>>>(1)#Aunqueentreparntesis,estonoesunatupla,yaquenoposeealmenosunacoma,porloquenicamenteaparecerelvalor.
1
>>>(1,)#Encambio,enesteotrocaso,sesunatupla.
(1,)
>>>(1,2)#Conmsdeunelementonoesnecesarialacomafinal.
(1,2)
>>>(1,2,)#Aunqueagregarlanomodificaelresultado.
(1,2)
3.1.6.Diccionarios
Para declarar un diccionario se usan las llaves { }. Contienen elementos separados por comas, donde cada
elementoestformadoporunparclave:valor(elsmbolo:separalaclavedesuvalorcorrespondiente).
Losdiccionariossonmutables,esdecir,sepuedecambiarelcontenidodeunvalorentiempodeejecucin.
Encambio,lasclavesdeundiccionariodebenserinmutables.Estoquieredecir,porejemplo,quenopodremos
usarnilistasnidiccionarioscomoclaves.
Elvalorasociadoaunaclavepuedeserdecualquiertipodedato,inclusoundiccionario.
>>>diccionario={"cadena":"abc","numero":42,"lista":[True,42L]}#Diccionarioquetienediferentesvaloresporcadaclave,inclusounalista.
>>>diccionario["cadena"]#Usandounaclave,seaccedeasuvalor.
'abc'
>>>diccionario["lista"][0]#Accederaunelementodeunalistadentrodeunvalor(delvalordelaclave"lista",mostrarelprimerelemento).
True
>>>diccionario["cadena"]="xyz"#Reasignarelvalordeunaclave.
>>>diccionario["cadena"]
'xyz'
>>>diccionario["decimal"]=3.1415927#Insertarunnuevoelementoclave:valor.
>>>diccionario["decimal"]
3.1415927
>>>diccionario_mixto={"tupla":(True,3.1415),"diccionario":diccionario}#Tambinesposiblequeunvalorseaundiccionario
>>>diccionario_mixto["diccionario"]["lista"][1]#Accederaunelementodentrodeunalista,queseencuentradentrodeundiccionario.
42L
>>>diccionario={("abc",):42}#Sesposiblequeunaclaveseaunatupla,puesesinmutable.
>>>diccionario={["abc"]:42}#Noesposiblequeunaclaveseaunalista,puesesmutable,loqueprovocarunaexcepcin.
(Excepcin)
3.1.7.Conjuntos
Losconjuntosseconstruyenmedianteset(items)dondeitemsescualquierobjetoiterable,comolistasotuplas.
Losconjuntosnomantienenelordennicontienenelementosduplicados.
Se suelen utilizar para eliminar duplicados de una secuencia, o para operaciones matemticas como
interseccin,unin,diferenciaydiferenciasimtrica.
>>>conjunto_inmutable=frozenset(["a","b","a"])#Seutilizaunalistacomoobjetoiterable.
>>>conjunto_inmutable
frozenset(['a','b'])
>>>conjunto1=set(["a","b","a"])#Primerconjuntomutable.
>>>conjunto1
set(['a','b'])
>>>conjunto2=set(["a","b","c","d"])#Segundoconjuntomutable.
>>>conjunto2
set(['a','c','b','d'])#Recuerda,nomantienenelorden,comolosdiccionarios.
>>>conjunto1&conjunto2#Interseccin
set(['a','b'])
>>>conjunto1|conjunto2#Unin.
set(['a','c','b','d'])
>>>conjunto1conjunto2#Diferencia(1).
set([])
>>>conjunto2conjunto1#Diferencia(2).
set(['c','d'])
>>>conjunto1^conjunto2#Diferenciasimtrica.
set(['c','d'])
3.1.8.Listasporcomprensin
Unalistaporcomprensin(eningls:listcomprehension)esunaexpresincompactaparadefinirlistas.Aligualque
lambda,apareceenlenguajesfuncionales.Ejemplos:
>>>range(5)#Lafuncin"range"devuelveunalista,empezandoen0yterminandoconelnmeroindicadomenosuno.
[0,1,2,3,4]
>>>[i*iforiinrange(5)]#Porcadaelementodelrango,lomultiplicaporsmismoyloagregaalresultado.
[0,1,4,9,16]
>>>lista=[(i,i+2)foriinrange(5)].
>>>lista
[(0,2),(1,3),(2,4),(3,5),(4,6)]
3.1.9.Funciones
Las funciones se definen con la palabra clave def, seguida del nombre de la funcin y sus argumentos entre
parntesisparafinalizarcon:,esdecir,
>>>defmi_funcion(arg1,arg2,...,argN):
Otra forma de escribir funciones, aunque menos utilizada, es con la palabra clave lambda. lambda es un
cosntructorquesirverparaejecutarfuncionesannimas,esdecirfuncionessinningnnombreperoquecrean
unareferenciaaunobjetofuncin.Lasintaxisdelambdaenpythones
lambda<aParameterList>:<aPythonexpressionusingtheparameters>
Elvalordevueltoenlasfuncionescondefsereldadoconlainstruccinreturn.lambdanonecesitadereturn
pararetornarunvalor,yaqueestimplcito,puestoquelafuncinenteradebeserunanicaexpresin.
def
>>>defsuma(x,y=2):
...returnx+y#Devuelvelasumadelvalordelavariable"x"yelvalorde"y".
...
>>>suma(4)#Lavariable"y"nosemodifica,siendosuvalor:2
6
>>>suma(4,10)#Lavariable"y"ssemodifica,siendosunuevovalor:10
14
lambda
>>>suma=lambdax,y=2:x+y
>>>suma(4)#Lavariable"y"nosemodifica,siendosuvalor:2
6
>>>suma(4,10)#Lavariable"y"ssemodifica,siendosunuevovalor:10
14
3.1.10.Clases
Lasclasessedefinenconlapalabraclaveclass, seguida del nombre de la clase y, si hereda de otra clase, el
nombredeesta.
EnPython2.xesrecomendablequeunaclaseherededeobject,enPython3.xestoyanoharfalta.
Enunaclaseunmtodoequivaleaunafuncin,yunapropiedadequivaleaunavariable.
__init__ es un mtodo especial que se ejecuta al instanciar la clase, se usa generalmente para inicializar
propiedadesyejecutarmtodosnecesarios.AligualquetodoslosmtodosenPython,debeteneralmenosun
parmetro,generalmenteseutilizaself.Elrestodeparmetrossernlosqueseindiquenalinstanciarlaclase.
Laspropiedadesquesedeseequeseanaccesiblesdesdefueradelaclasesedebendeclararusandoself.delante
delnombre.
Enpythonnoexisteelconceptodeencapsulacin,porloqueelprogramadordebeserresponsabledeasignar
losvaloresalaspropiedades
>>>classPersona(object):
...def__init__(self,nombre,edad):
...self.nombre=nombre#UnaPropiedadcualquiera.
...self.edad=edad#Otrapropiedadcualquiera.
...defmostrar_edad(self):#Esnecesarioque,almenos,tengaunparmetro,generalmente:"self".
...printself.edad#mostrandounapropiedad.
...defmodificar_edad(self,edad):#ModificandoEdad.
...ifedad<0oredad>150:#Secompruebaquelaedadnoseamenorde0(algoimposible),nimayorde150(algorealmentedifcil).
...returnFalse
...else:#Siestenelrango0150,entoncessemodificalavariable.
...self.edad=edad#Semodificalaedad.
...
>>>p=Persona("Alicia",20)#Instanciamoslaclase,comosepuedever,noseespecificaelvalorde"self"
>>>p.nombre#Lavariable"nombre"delobjetosesaccesibledesdefuera.
'Alicia'
>>>p.nombre="Andrea"#Yportanto,sepuedecambiarsucontenido.
>>>p.nombre
'Andrea'
>>>p.mostrar_edad()#Podemosllamaraunmtododelaclase.
20
>>>p.modificar_edad(21)#Ypodemoscambiarlaedadusandoelmtodoespecficoquehemoshechoparahacerlodeformacontrolada.
>>>p.mostrar_edad()
21
3.1.11.Condicionales
Unasentenciacondicionalifejecutasubloquedecdigointernoslosisecumpleciertacondicin.Sedefineusandola
palabra clave if seguida de la condicin, y el bloque de cdigo. Condiciones adicionales, si las hay, se introducen
usandoelif seguida de la condicin y su bloque de cdigo. Todas las condiciones se evalan secuencialmente hasta
encontrar la primera que sea verdadera, y su bloque de cdigo asociado es el nico que se ejecuta. Opcionalmente,
puedehaberunbloquefinal(lapalabraclaveelseseguidadeunbloquedecdigo)queseejecutaslocuandotodaslas
condicionesresultanfalsas.
>>>verdadero=True
>>>ifverdadero:#Noesnecesarioponer"verdadero==True".
...print"Verdadero"
...else:
...print"Falso"
...
Verdadero
>>>lenguaje="Python"
>>>iflenguaje=="C":#lenguajenoes"C",porloqueestebloqueseobviaryevaluarlasiguientecondicin.
...print"Lenguajedeprogramacin:C"
...eliflenguaje=="Python":#Sepuedenaadirtantosbloques"elif"comosequiera.
...print"Lenguajedeprogramacin:Python"
...else:#Encasodequeningunadelasanteriorescondicionesfueracierta,seejecutaraestebloque.
...print"Lenguajedeprogramacin:indefinido"
...
Lenguajedeprogramacin:Python
>>>ifverdaderoandlenguaje=="Python":#Usode"and"paracomprobarqueambascondicionessonverdaderas.
...print"VerdaderoyLenguajedeprogramacin:Python"
...
VerdaderoyLenguajedeprogramacin:Python
3.1.12.Buclefor
El bucle for es similar a foreach en otros lenguajes. Recorre un objeto iterable, como una lista, una tupla o un
generador, y por cada elemento del iterable ejecuta el bloque de cdigo interno. Se define con la palabra clave for
seguida de un nombre de variable, seguido de in, seguido del iterable, y finalmente el bloque de cdigo interno. En
cadaiteracin,elelementosiguientedeliterableseasignaalnombredevariableespecificado:
>>>lista=["a","b","c"]
>>>foriinlista:#Iteramossobreunalista,queesiterable.
...printi
...
a
b
c
>>>cadena="abcdef"
>>>foriincadena:#Iteramossobreunacadena,quetambinesiterable.
...printi,#Aadiendounacomaalfinalhacemosquenointroduzcaunsaltodelnea,sinounespacio.
...
abcdef
3.1.13.Buclewhile
El bucle while evala una condicin y, si es verdadera, ejecuta el bloque de cdigo interno. Contina evaluando y
ejecutando mientras la condicin sea verdadera. Se define con la palabra clave while seguida de la condicin, y a
continuacinelbloquedecdigointerno:
>>>numero=0
>>>whilenumero<10:
...numero+=1
...printnumero,
...
123456789
3.1.14.Mdulos
Existen muchas propiedades que se pueden agregar al lenguaje importando mdulos, que son minicdigos (la
mayoraescritostambinenPython)queproveendeciertasfuncionesyclasespararealizardeterminadastareas.Un
ejemplo es el mdulo Tkinter, que permite crear interfaces grficas basadas en la biblioteca Tk. Otro ejemplo es el
mdulo os, que provee acceso a muchas funciones del sistema operativo. Los mdulos se agregan a los cdigos
escribiendoimportseguidadelnombredelmduloquequeramosusar.
>>>importos#Mduloqueproveefuncionesdelsistemaoperativo
>>>os.name#Devuelveelnombredelsistemaoperativo
'posix'
>>>os.mkdir("/tmp/ejemplo")#Creaundirectorioenlarutaespecificada
>>>importtime#Mduloparatrabajarconfechasyhoras
>>>time.strftime("%Y%m%d%H:%M:%S")#Dndoleunciertoformato,devuelvelafechay/ohoraactual
'2010081018:01:17'
3.1.15.Sistemadeobjetos
En Python todo es un objeto (incluso las clases). Las clases, al ser objetos, son instancias de una metaclase. Python
ademssoportaherenciamltipleypolimorfismo.
>>>cadena="abc"#Unacadenaesunobjetode"str"
>>>cadena.upper()#Alserunobjeto,poseesuspropiosmtodos
'ABC'
>>>lista=[True,3.1415]#Unalistaesunobjetode"list"
>>>lista.append(42L)#Unalistatambin(aligualquetodo)esunobjeto,ytambinposeesuspropiosmtodos
>>>lista
[True,3.1415,42L]
ANTERIOR|SIGUIENTE
MOSTRARELCDIGO
Copyright2013,LuisMiguelSnchezBrea.CreadoconSphinx