Professional Documents
Culture Documents
Acció: cada una de les tasques descrites en un procés que modifica els elements d’informació.
Llenguatge de programació: llenguatge en el que es representa un programa. Pot ser simbòlic (d’alt nivell o de baix
nivell) o llenguatge màquina.
Una variable és una manera de referenciar un lloc de memòria que usa un programa. El lloc de memòria que
referencia pot contenir valors com nombres, text o tipus més complexos.
Els valors tenen tipus: enters, caràcters, etc. Quan parlem del tipus d’una variable ens referim al tipus del valor
que en aquest moment conté o referencia la variable.
1
Elisenda Oró Soler Octubre 2020
Sentències primitives
Són aquelles que es poden realitzar directament, és a dir, que són bàsiques.
Definició 1
Variable: és una manera de referenciar un lloc de la memòria de l’ordinador on s’hi emmagatzema una
informació.
Usem una variable per indicar al programa que guardi alguna dada en un lloc de memòria (assignació) o que
recuperi alguna dada d’un lloc de memòria (avaluació o consulta).
Identificador: és el nom que li donem a una variable. Està compost per lletres, números o ’_’ (caràcter subratllat), però
ha de començar obligatòriament per una lletra.
Tipus: un tipus de dades defineix un conjunt de valors concrets que pot representar una dada i les operacions que es
poden fer sobre ells.
Els valors tenen tipus: enters, caràcters, etc. Quan parlem del tipus d’una variable ens referim al tipus del valor que en
aquest moment conté o referencia la variable.
Valor: el valor d’una variable és la informació concreta que referencia en el moment en què es consulta.
Donar valor a una variable s’anomena assignar. S’usa el símbol = i no s’ha de confondre amb una equació matemàtica.
A l’esquerra del = hi ha el nom d’una variable i a la dreta un valor o una expressió. L’ordre és important!
2. El valor obtingut ocupa un espai a memòria on s’emmagatzema; en avaluar l’expressió, el Python retorna la
.....referència d’aquest espai de memòria.
3. Assignació: es crea una associació entre el nom de la variable (identificador) i l’adreça de memòria d’aquest
....espai.
Podem assignar un valor a la mateixa variable tantes vegades com vulguem. L’efecte és que la variable, cada moment,
només referencia el darrer valor assignat.
Per saber quin és el valor d’una variable en un moment donat, només hem d’escriure una expressió que contingui el
seu nom (o identificador).
2
Elisenda Oró Soler Octubre 2020
- Es recupera de la memòria el valor referenciat per la variable.
- Efectes:
Definició d’estat
Definició 2
El conjunt de la memòria de l’ordinador i els canals d’entrada i sortida defineixen l’entorn del programa.
Definició 3
El conjunt de valors de les variables i l’estat dels canals d’entrada i sortida en un moment donat defineixen l’estat
del programa.
Les accions van modificant l’estat per portar-nos de la precondició (estat inicial) a la postcondició (estat que volem a
l’acabar el programa o funció).
Tipus de dades
Els tipus de dades més habituals en els llenguatges de programació i que veurem en Python són:
% representa el residu de la divisió Tipus real: s’utilitza per representar valors numèrics reals (nombres
entre dos enters. amb part decimal).
/ representa la divisió entre dos - Valors: nombre reals
nombres enters i normalment no és un
nombre enter. - Operadors interns: - (canvi signe), + , - , * , / , **
- Valors: el conjunt finit de valors indivisibles que permeten construir textos. Informalment podem dir que
corresponen a les tecles del teclat (o combinació de tecles pitjades alhora).
- Els caràcters van sempre entre cometes simples. Exemples de sintaxi dels valors: ’a’, ’ ’, ’5’, ’_’
La funció ord(c) retorna l’enter que representa el número d’ordre del caràcter c. Això permet establir una
comparació d’ordre entre els caràcters que els operadors <=, >, >= implementen. L’enter que correspon a cada
caràcter es coneix com a codificació. N’hi ha vàries, sent la més coneguda la codificació ASCII.
3
Elisenda Oró Soler Octubre 2020
Conversió de tipus
Habitualment, variables amb valors d’un tipus no es poden operar amb variables que tinguin valors d’un tipus diferent.
Per tal de poder fer operacions entre valors de tipus diferents calen funcions de conversió:
La conversió d’enter a real es fa automàticament quan és necessària. Per exemple: 6/2.0 = 3.0
La conversió és especialment necessària en la lectura de dades. Com que les variables no estan associades a cap tipus,
entrar pel teclat ’5’ i guardar-lo en una variable no ens aclareix si volíem l’enter 5, el real 5.0 o el caràcter ’5’.
Quan llegim pel teclat, hem de fer una conversió explícita de tipus. Si volem:
- Un enter: a = int(input("Entra la dada: ")) - Cadena o cadena de caràcters: a=str(input("Entra la dada:"))
Operacions lògiques
Negació: not P (Valor de veritat contrari al de P).
Lleis de De Morgan
Expressions
Una expressió és una combinació d’operadors i operands que es pot construir seguint les següents regles:
5. Si E₁, E₂, · · · , En són expressions i f és una funció, f(E₁, E₂, · · · , En) també ho és.
4
Elisenda Oró Soler Octubre 2020
Expressions: avaluació
Tota expressió es pot avaluar. El procés d’avaluació es fa seguint el següent procediment:
1. Primer sempre s’avalua tot el que estigui entre parèntesis (els parèntesis ens permeten canviar l’ordre de
precedència) i les crides a funcions.
2. S’avaluen els operadors segons el seu ordre de precedència.
3. Quan dos operadors tenen la mateixa prioritat, s’avaluen depenent de l’associativitat que tinguin els operadors
(columna dreta de la taula).
1. Composició seqüencial
2. Composició alternativa
3. Composició repetitiva
Composició seqüencial
La composició seqüencial consisteix en executar una seqüència d’accions, ordenadament, una darrere l’altra.
acció₁
acció₂
...
acción
Composició alternativa
La composició alternativa permet decidir quines accions s’executen en funció de quin sigui el resultat d’avaluar una
condició (expressió booleana).
5
Elisenda Oró Soler Octubre 2020
Composició alternativa amb elif
Existeix una estructura alternativa pels casos en què hi ha més de dues possibilitats: elif
En Python és important fixar-se en la indentació de les línies perquè ens indiquen si les instruccions estan o no dins
d’una estructura de control.
Codi 1 Codi 2
Composició repetitiva
La composició repetitiva o iterativa permet repetir l’execució d’un conjunt d’accions un nombre determinat de
vegades o mentre es compleixi una determinada condició.
Observacions:
1. En el disseny de codis on hi ha estructures repetitives (també anomenades estructures iteratives o bucles) s’ha
de tenir en compte que la condició deixi de complir-se en algun moment per tal de poder sortir de les repeticions.
6
Elisenda Oró Soler Octubre 2020
Funcions
Definició 1
En programació, una funció és un tros de codi que realitza un càlcul determinat, i que té un nom pel qual podem
cridar-la sempre que necessitem fer el càlcul.
Entre les utilitats d’organitzar els programes en funcions, destaca la possibilitat de la reutilització del codi en diferents
llocs del programa i en d’altres aplicacions.
Definició de funcions
És una bona política documentar les funcions que definim. Per això cal indicar entre tres cometes dobles (" " "):
2. Precondició: condicions que han de satisfer-se just abans de començar l’execució del codi de la funció
Normalment fa referència a la informació (paràmetres) que li passem a la funció.
3. Postcondició: condicions que han de satisfer-se just després d’acabar l’execució del codi de la funció.
Normalment fa referència a la informació que retorna la funció.
- El conjunt d’accions que estan dins de la funció s’anomena Cos de la funció. Aquestes accions fan els càlculs que
necessita la funció per generar el seu resultat, a partir de les dades (paràmetres) que li hàgim donat.
- Dins d’una funció podem escriure les sentències primitives que vulguem unides amb les estructures de control
(seqüencial, condicional i/o repetitiva) i també fer crides a d’altres funcions.
- El resultat és retornat per la funció, al punt on s’hagi fet la crida, mitjançant la instrucció return.
- En Python, les funcions poden retornar un o més resultats, però també poden no retornar res. Més endavant veurem
exemples d’aquests diversos casos.
Crida a funcions
Definir una funció no és el que mateix que cridar-la o utilitzar-la. En Python, per cridar una funció usarem aquesta
sintaxi:
7
Elisenda Oró Soler Octubre 2020
Paràmetres d’una funció
Definició 2
Els paràmetres d’una funció són les peces d’informació que hem de donar a la funció per tal que pugui fer el càlcul
que li demanem.
Per exemple, per calcular l’àrea d’una circumferència és necessari saber el seu radi, per tant, si dissenyem una funció
area que faci aquest càlcul, el radi serà un paràmetre de la funció (en aquest cas, a més, l’únic). Els paràmetres d’una
funció vénen definits en la capçalera de la mateixa:
def nom_funció (par_1, ... ,par_n):
En Python, les variables són noms de referències a objectes que estan a la memòria.
Els objectes que tenen valors que poden canviar s’anomenen mutables; els objectes que tenen valors que no es poden
canviar s’anomenen immutables.
La mutabilitat d’un objecte depèn del seu tipus; nombres, booleans, cadenes i tuples són immutables mentre que
llistes i diccionaris són mutables.
1. Objectes immutables: Un cop creats, no es poden modificar. Si una variable fa referència a un objecte
immutable i li assignem un nou valor, estem fent que la variable referenciï un altre objecte (no modifiquem el
que referenciava abans). Tipus d’objectes immutables que hem vist: int (enters), float (reals), str (cadenes de
caràcters) i bool (booleans).
2. Objectes mutables: Un cop creats, poden ser modificats. Si una variable fa referència a un objecte mutable i el
modifiquem, estem modificant l’objecte que teníem a memòria de forma permanent. La variable segueix fent
referència al mateix objecte, però l’objecte ha canviat. Tipus d’objectes mutables que veurem: list (llistes).
Assignar un objecte a una variable vol dir que la variable referencia al lloc de memòria on està l’objecte.
1. La variable que correspon a un paràmetre formal (nom de la variable amb què treballa la funció), passa a
referenciar el valor apuntat pel paràmetre real (variable que conté la informació necessària per fer el càlcul).
La variable que correspon a un paràmetre formal només existeix dins del cos de la funció.
2. Per tant, els valors creats o modificats dins d’una funció, si volem veure’ls al sortir de la funció cal que hi tinguem
un accés des de fora.
Per ara treballarem amb objectes immutables, per tant, les modificacions que es facin als paràmetres dins la funció no
es mantindran en sortir de la funció.
8
Elisenda Oró Soler Octubre 2020
1. La variable a és un paràmetre real (variable que conté la informació necessària per fer el càlcul).
2. En el moment de la crida, el paràmetre n rep una referència al valor apuntat per la variable a. Tant a com n
referencien el mateix lloc on hi ha el valor 10.
4. Quan n es modifica dins de la funció això fa que referenciï una altra zona de la memòria on hi ha el valor 20. Recordeu
l’operació d’assignació.
5. A l’acabar l’execució de la funció es retorna el valor de n que s’assigna a dup. a no ha canviat de valor.
Definició 1
Una seqüència és una llista ordenada d’elements, on n’hi ha un de primer (sempre que no sigui la seqüència
buida) i un de darrer (normalment - vegeu més endavant).
Les seqüències apareixen en molts tipus de problemes. De fet, sempre que resolem un problema usant una estructura
repetitiva, estem tractant una seqüència.
- Recorregut: algorismes que recorren i tracten tots els elements d’una seqüència per realitzar un càlcul.
- Cerca: algorismes que recorren els elements d’una seqüència buscant un element que compleixi una propietat
determinada.
Per dissenyar algorismes d’aquest tipus, és pràctic utilitzar esquemes coneguts de solució dels mateixos.
Definició 2
Un esquema és una plantilla de solució d’un problema presentat en format algorísmic, de manera que es pot
aplicar a un conjunt de problemes similars simplement adequant-lo al problema particular que es vulgui
solucionar.
1. Identificació del problema entre mans i per tant de l’esquema a fer servir per solucionar-lo.
2. Adaptació de l’esquema al problema particular que es vulgui resoldre.
Entre els avantatges de fer servir esquemes es compten:
9
Elisenda Oró Soler Octubre 2020
Esquemes de recorregut
L’esquema de recorregut s’aplica en els problemes on s’han de tractar tots els elements d’una seqüència.
Exemples:
Esquemes de cerca
L’esquema de cerca s’aplica en els problemes on s’ha de determinar si existeix un element en una seqüència que
compleixi una propietat donada.
Exemples:
1. Comprovar si un nombre és
primer.
2. Determinar si una seqüència
d’enters donada està ordenada
de forma creixent.
Una altra versió de l’esquema que fa servir una variable booleana per
3. Determinar si en una cadena
recordar si l’element s’ha trobat, és la següent: de caràcters hi ha alguna
paraula que comenci per la
lletra ’p’.
4. ...
10