




















Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: Elements de programacio, Profesor: , Carrera: Enginyeria Informàtica, Universidad: UB
Tipo: Apuntes
1 / 28
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!





















Classes RECORDATORI^ : Un^ objecte^ és^ un^ tipus^ actiu
de^ dades^ que^ consisteix^ de: j p q
1.^ Una^ col∙lecció^ d’informació
relacionada.
2.^ Un^ conjunt^ d’operadors
per^ manipular^ aquesta^ informació. La^ informació^ s’emmagatzema
en^ variables^ instanciades.^
Les^ operacions^ s’anomenen mètodes^ i^ les^ variables^ instanciades
i^ els^ mètodes^ són^ els^ atributs
dels^ objectes. Tots^ els^ objectes^ són^ instàncies
d’alguna^ classe.^ La^ classe^ de
l’objecte^ determina^ quins atributs^ tindrà^ l’objecte.P d^ bj^
i d’^ l^ i Podem^ crear^ nous^ objectes
a^ partir^ d’una^ classe^ quan^ i
nvoquem^ un^ constructor. 2
Classes Per^ veure^ com^ definir
noves^ classes,^ anem
a^ construir^ un programa^ que^ faci
la^ simulació^ d’un^
canó^ (en^ funció^ de l’angle^ i^ de^ la^ velocitat
inicial^ del^ projectil).^4
Classes Necessitem^ saber^ que: 1) La gravetat genera a prop de la superfície terrestre una1) La^ gravetat^ genera
,^ a^ prop^ de^ la^ superfície
terrestre,^ una acceleració^ de^ 9,8m/s
2 (això^ significa^ que^ si
llancem^ un^ projectil cap^ amunt^ a^ una^ velocitat
s de 20m/,^ al^ cap^ d’un segon^ la^ seva p^
p^ g velocitat^ serà^ de^ 10,2m/s,
al^ cap^ de^ 2s^ serà^ de^
0,4m/s^ i^ poc després^ començarà^ a
baixar).
à^ d^ l^ fí i
(^ l
a^ prop^ de^ la^ superfície
(no^ el^ posarem^ en òrbita).Enlloc^ de^ fer^ servir^ les^ fórmules
del^ càlcul^ que^ ens^ donen
la posició^ del^ projectil^ en
cada^ instant^ de^ temps,
anem^ a^ fer^ un programa que ho faci per simulació
5 programa^ que^ ho^ faci
per^ simulació.
Classes Ara^ hem^ de^ calcular^ les^ components
x^ i^ y^ de^ la^ velocitat^ inicial.^ Python^ treballa
en^ radiansy El^ següent^ punt^ és^ anar^ calculant
la^ posició^ i^ la^ velocitat^ fins^
que^ no^ toca^ terra... 7
Classes Això^ és^ força^ simple^ amb^ aquesta
iteració: Com^ que^ el^ vent^ no^ ens^ afecta,
la^ component^ horitzontal^ de
la^ velocitat^ serà^ constant. La^ distància^ recorreguda^ per
cada^ interval^ de^ temps^ serà
simplement^ time*xvel, i
per^ tant^ la^ seva^ posició^ actual: Per^ la^ component^ vertical^ és
un^ pèl^ més^ complicat.^ La^ velocitat
al^ final^ de^ l’interval^ serà: 8
Classes
A^ t^ ió é^ é^
i^ i h^ li^ i^ t^ i bl^
d l^ (^ d Aquesta^ versió^ és^ més^ concisa,
i^ hem^ eliminat^ variables^ del
programa^ (que^ queden ocultes^ a^ la^ funció).Però no és la única manera de fer hoPerò^ no^ és^ la^ única^ manera de^ fer‐ho...^11
Com^ definir^ una
nova^ classe Suposem^ que^ volem^ definir
un^ dau^ de^ n^ cares,^ la classe^ MSDie. Un^ objecte^ d’aquest^ tipus^ ha
de^ saber^ dues^ coses: quantes^ cares^ té^ i^ quin^ valor
ha^ pres^ en^ un determinat^ moment. Quan^ el^ creem^ especificarem
quantes^ cares^ té. l^ d^ i dEls^ operadors^ que^ tindrem^ seran
tres:^ roll,^ que ens^ retornarà^ un^ valor^ aleatori
entre^1 i^ n, setValue,^ per^ imposar^ un
determinat^ valor,^ i tV l b l l getValue^ per^ saber^ el^ seu
valor.^13
Com^ definir^ una
nova^ classe Amb^ això^ el^ que^ podem^ fer
és^ crear^ un^ dau^ invocant^ el
constructor^ MSDie, donant^ el^ nombre^ de^ cares com^ a^ paràmetre. L’objecte^ dau^ s’encarregarà
de^ mantenir^ aquest^ nombre
internament^ fent^ servir una^ variable^ instanciada.^ També
farà^ servir^ una^ altra^ variable
instanciada^ per mantenir^ el^ valor^ actual^ del
dau.^ Inicialment^ serà^ 1. El^ valor^ del^ dau^ pot^ canviar
quan^ cridem^ els^ mètodes^ roll
i^ setValue,^ i^ el podem^ obtenir^ amb^ el^ getValue
Anem^ ara^ a^ veure^ com^ escriure
tot^ això:^14
Nombres^ aleatoris
(Random)(^ ) Com^ podem^ generar^ coses^
aleatòries^ amb un^ ordinador^ que^ no^ té^ cap
component aleatòria? Python^ ens^ proporciona^ dues
funcions^ que ens^ poden^ ajudar:^ randrange
i^ random. randrange^ ens^ retorna^ un
nombre^ sencer pseudoaleatori dins^ d’un^ rang
determinat. Es^ pot^ cridar^ amb^ fins^ a^3 paràmetres.Per^ exemple,^ randrange(1,6)
retorna^ un b d l [1 2 3 4 5] i nombre^ del^ rang^ [1,2,3,4,5],
i randrange(5,105,5)^ ret^ orna
un^ múltiple^ de^5 entre^5 i^ 100,^ inclusiu.
16
Nombres^ aleatoris
(Random)(^ ) random^ (no^ necessita^ paràmetres)
genera^ un^ real^ entre^ zero^ i ú. 17
Com^ definir^ una
nova^ classe
2.^ Els^ paràmetres^ formals^
del^ mètode^ prenen^ els^ valors
dels^ paràmetres^ de^ la crida.^ En^ el^ cas^ d’una^ crida^
a^ un^ mètode,^ el^ primer^ paràmetre
formal correspon a l’objecte (a partir d’ara ja no el comentarem més, però calcorrespon^ a^ l objecte^ (a^ partir
d ara^ ja^ no^ el^ comentarem^
més,^ però^ cal recordar^ que^ existeix!).^ En^ el
nostre^ exemple:
3.^ El^ cos^ del^ mètode^ s’executa.4.^ El^ control^ retorna^ al^ punt
posterior^ al^ de^ la^ crida^ del^
mètode. 19
Com^ definir^ una
nova^ classe Hi h^ t^ èt d^ d’^
l^ t^ i^ ifi^
t^ i l^ l P th Hi^ ha^ certs^ mètodes^ d’una^ classe
que^ tenen^ un^ significat^ especial
pel^ Python. Aquests^ mètodes^ tenen^ noms
que^ comencen^ i^ acaben^ amb
Per exemple^ init^ és el constructor de l’objecte Python crida aquest mètodePer^ exemple,^ init^ és^ el^
constructor^ de^ l objecte.^ Python
crida^ aquest^ mètode per^ inicialitzar^ un^ MSDie^ nou.
El^ seu^ rol^ és^ donar^ valors^ inicials
a^ les^ variables^ de l’objecte.Des^ de^ fora^ de^ la^ classe,^ el^ constructor
es^ crida^ fent^ servir^ el^ nom^
de^ la^ classe: Quan^ s’executa^ aquesta^ instrucció,
Python^ crea^ un^ nou^ MSDie
,^ i^ executa^ init per^ aquell^ objecte.^ El^ resultat
és^ que^ die1.sides^ pren
el^ valor^6 i die1.value^ pren^ el^ valor
6.^ El^ l^ d’^ t^ i bl^
d^ lt^ d^ d’ lt^ èt d^ fi p La gran avantatge^ d’aquestes^ variables^ es^ que
ens^ permeten^ guardar^ valors
de Els^ valors^ d’aquestes^ variables^ es^ poden^ consultar
des^ d’altres^ mètodes^ o^ fins i^ tot^ en^ successives^ crides^ del^ mateix^ mètode
(això^ no^ passa^ amb^ les^ variables locals^ de^ les^ funcions,^ que^ desapareixen^ que la^ funció^ s’acaba). 20 l’estat^ d’un^ objecte^ sense^ preocupar
‐se^ de^ gestionar‐ho^ dins^ del
programa.