Introduction¶
Què és programar?¶
Descriure formalment la solució genèrica d’un problema de manera que un ordinador pugui calcular una solució concreta a partir d’unes dades concretes.
Per programar calen habilitats de disciplines com
- matemàtiques:
per tal d’expressar els càlculs en llenguatges formals,
- enginyeria:
per tal de dissenyar components, assemblar-los en sistemes complexos i avaluar alternatives i
- ciència:
per tal d’observar el comportament de sistemes complexos, formular hipòtesis i comprovar les prediccions.
El llenguatge de programació Python¶
Python és un llenguatge de programació d’alt nivell (http://python.org/).
Els ordinadors només poden executar programes escrits en llenguatges de baix nivell.
Avantatges dels programes escrits en llenguatges de programació d’alt nivell:
S’escriuen més de pressa, són més curts, més fàcils de llegir i es més probable que siguin correctes.
Són portables.
Compiladors i intèrprets¶
Compilador, programa (o codi) font, programa objecte, programa executable.
Combinació compilador-intèrpret, byte-code (codi intermedi), màquina virtual. Python i Java.
L’intèrpret de Python¶
Python és un llenguatge interpretat
Dos modes de treball: shell mode i script mode.
Script mode: per programes.
Shell mode: per petits experiments.
Què és debugging?¶
Bugs, errors de programació. Poden ser errors lèxics, sintàctics, d’execució i lògics (semàntics).
Error lèxic (tokens):
>>> ? + 5 SyntaxError: invalid syntax
Error sintàctic:
>>> 5 * 2) SyntaxError: unmatched ')'
Errors d’execució:
>>> 3 + 'hola' Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> 3 + 'hola' TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>> 1/0 Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> 1/0 ZeroDivisionError: division by zero
Error lògic en calcular el tant per cent d’estudiants aprovats sobre el total:
>>> aprovats = 5 >>> total = 10 >>> total/aprovats*100 200.0
Debugging: correcció d’errors.
Vegeu algunes pautes per evitar cometre errors i corregir-los.
Valors i tipus¶
Valors de tipus enter (
int).1285 -5284327 0
Nombres sense coma ni punt decimal.
Valors de tipus real representats en coma flotant (
float).12.85 -528.4327 0.0 3e-4
Nombres amb punt decimal o escrits en notació científica (-1.7e3).
Valors de tipus string o cadena (
str).>>> 'Hola!' 'Hola!' >>> "Digues com estàs." 'Digues com estàs.' >>> """I les teves amistats, com van?""" 'I les teves\namistats,\n com van?'
Funció
type.>>> type(-5284327) <class 'int'> >>> type(3e-4) <class 'float'> >>> type('Hola') <class 'str'>
El tipus s’ha deduït de la sintaxi del valor.
Variables¶
Les variables són noms que es refereixen a objectes.
Les dades en Python es representen mitjançant objectes.
Un objecte té associats un identificador, un tipus i un valor.
Noms de variables i paraules clau¶
Arbitràriament llargs i formats per lletres, dígits i
_començant per lletra.No són noms de variables vàlids les paraules clau
False await else import pass None break except in raise True class finally is return and continue for lambda try as def from nonlocal while assert del global not with async elif if or yield
Exemples de noms correctes:
_abc lm1 n_o _ _1a h_3 a94_3jl
Exemples de noms incorrectes:
1xyz ab? b-a k+l @fgh
Assignment sentence¶
Sentència d’assignació:
variable = valor.A partir d’aquest moment la
variablees refereix (o fa referència) un objecte amb valorvalor.L’operador d’assignació (
=) no és commutatiu.Les variables poden canviar l’objecte al que es refereixen.
Els objectes als quals no es refereix cap variable es destrueixen.
- Author:
Antoni Soto i Riera
- Date:
4/10/2010
- Copyright:
Reconeixement-Compartir Igual 3.0 Espanya de Creative Commons
Assignacions múltiples¶
Una variable pot canviar el valor al que es refereix:
a = 3 a = 7
Sentència d’assignació (=) vs igualtat (==):
La igualtat és simètrica i l’assignació no:
a = 7 7 = a
La igualtat matemàtica sempre és certa, l’assignació pot fer que dues variables es refereixin al mateix valor, però pot canviar:
a = 5 b = a # a i b es refereixen a 5: són iguals a = 9 # ara ja no
Actualitzant variables¶
El nou valor de la variable depèn de l’anterior:
x = x + 1
És un error actualitzar una variable que no s’ha inicialitzat:
x = 0 x = x + 1
Incrementar (sumar 1) i decrementar (restar 1)
x = 0 x = x + 1
Sentències¶
L’assignació i les expressions són sentències.
L’assignació produeix un canvi en l’entorn: modifica variables. Les expressions no. Veieu Online Python Tutor.
Un programa és una seqüència de sentències (composició seqüencial).
Avaluació d’expressions¶
Expressió: combinació de valors, variables i operadors.
>>> a = 5.7 >>> a - 3**2 -3.3
Avaluació d’una expressió: realitzar els càlculs indicats pels operadors a partir dels valors i dels valors de les variables que hi apareixen.
Un valor és una expressió i una variable també.
>>> 3 3 >>> a = 5.7 >>> a 5.7
Una variable ha d’estar inicialitzada per poder participar en una expressió.
>>> b Traceback (most recent call last): File "<pyshell#21>", line 1, in <module> b NameError: name 'b' is not defined >>> b = -1 >>> b -1
Avaluar una expressió no és el mateix que escriure el seu valor.
>>> a = 5.7 >>> a - 3**2 -3.3 >>> print(a - 3**2) -3.3
L’avaluació d’una expressió és una sentència vàlida, però en un script no té cap efecte.
Operadors i operands¶
Operadors: símbols que representen càlculs (suma, producte, …).
Operands: valors sobre els que actuen els operadors.
Exemples: +, *, /, **, %, (, ).
Divisió entera: //.
Ordre de les operacions¶
Prioritat: parèntesis, elevar, multiplicació i divisió, suma i resta.
>>> 3 + 5 * 2 ** (3 - 1) 23 >>> 3 + (5 * (2 ** (3 - 1))) 23
Associativitat: d’esquerra a dreta excepte per elevar a una potència.
>>> 5 - 3 - 2 0 >>> (5 - 3) - 2 0 >>> 5 - (3 - 2) 4
>>> 2 ** 3 ** 4 2417851639229258349412352 >>> 2 ** (3 ** 4) 2417851639229258349412352 >>> (2 ** 3) ** 4 4096
Vegeu Evaluation order al Manual de Referència de Python.
Operacions sobre strings¶
Exemples d’operacions il·legals.
'a' / 'b' 'a' - 'b' 'a' ** 3
Concatenació (+) i repetició (*).
>>> c = 'Hola' + 'Joan' >>> c 'HolaJoan' >>> d = '-' * 5 >>> d '-----'
Composition¶
Program = Composition of simple sentences written one after the other (sequential order) and executed in that same order.
Assignació múltiple¶
Exemple:
>>> a, b = 3, 'xyz' >>> a 3 >>> b 'xyz'
Comentaris¶
Els programes els executen els ordinadors però els llegeixen els humans.
Els comentaris adreçats als humans tenen com a objectiu facilitar la lectura dels programes.
Sintaxi
#.>>> # 3 >>> 3 3
Sortida¶
Funció
print().
- Author:
Antoni Soto i Riera
- Date:
4/10/2010
- Copyright:
Reconeixement-Compartir Igual 3.0 Espanya de Creative Commons
Assignacions múltiples¶
Una variable pot canviar el valor al que es refereix:
a = 3 a = 7
Sentència d’assignació (=) vs igualtat (==):
La igualtat és simètrica i l’assignació no:
a = 7 7 = a
La igualtat matemàtica sempre és certa, l’assignació pot fer que dues variables es refereixin al mateix valor, però pot canviar:
a = 5 b = a # a i b es refereixen a 5: són iguals a = 9 # ara ja no
Actualitzant variables¶
El nou valor de la variable depèn de l’anterior:
x = x + 1
És un error actualitzar una variable que no s’ha inicialitzat:
x = 0 x = x + 1
Incrementar (sumar 1) i decrementar (restar 1)
x = 0 x = x + 1
Exercicis¶
topics/intr/Conversions/index: 2 i 5.
topics/intr/Física/index: 3.
topics/intr/Geometria/index: 4, 5.
topics/intr/Percentatge/index