ASIX-M3-UF1-A1
Esquema simplificat d’un ordinador
- La unitat central de processament pot processar milions d’instruccions per segon. I sempre espera noves instruccions...
- Usualment aquestes instruccions es poden donar agrupades en el que podríem anomenar com Programa.
- Però, en quin llenguatge li podem parlar a la unitat central de processament?
- Només entén un llenguatge de molt baix nivell conegut com llenguatge màquina.
- És fàcil aprendre aquest llenguatge i àgil per fer programes?
- Doncs NO!.
- Necessitem un llenguatge de programació d’alt nivell (més proper al llenguatge que parlem) per poder ser eficients alhora de programar.
- Python és una molt bona opció pels Administradors de Sistemes.
- Nosaltres fem programes d’alt nivell i la CPU només entén llenguatges de baix nivell. Com es resol?
- Hi ha dos opcions que depenen del llenguatge d’alt nivell emprat: intèrprets i compiladors.
- Python és un llenguatge interpretat.
- Aleshores per poder fer els nostres programes necessitarem tenir instal·lat en el nostre sistema l’intèrpret de python.
- Conviuen dues versions de python la 2.x i la 3.x: això és degut a que curiosament no hi ha compatibilitat entre les versions 2 i 3.
- user@terra$ python2 -V
- user@terra$ python3 -V
- I per tant, molts programes fets per a la versió 2 s’haurien de “reprogramar” perquè funcionin en la versió 3.
- Nosaltres treballarem amb la versió 3 per la millora que hi ha en les llibreries de sistemes.
- Amb les darreres versions d’Ubuntu l’intèrpret de python ja ve instal·lat.
- Veiem-ho!!
user@terra$ python3 Python 3.6.9 (default, Jan 26 2021, 15:33:00) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
Contingut
- 1 ACTIVITAT 1.1: La calculadora
- 2 ACTIVITAT 1.2: Primers tipus de dades: enters(sense decimal) i reals(amb coma flotant)
- 3 ACTIVITAT 1.3: Els operador lógics i de comparació
- 4 ACTIVITAT 1.4: Les variables i les assignacions
- 5 ACTIVITAT 1.5: Cadenes
- 6 ACTIVITAT 1.6: Funcions predefinides
- 7 ACTIVITAT 1.7: Funcions en mòduls
- 8 ACTIVITAT 1.8: Els mètodes
- 9 ACTIVITAT 1.9: Introducció als programes
- 10 ACTIVITAT 1.10: Sortida amb format i programes més llegibles
ACTIVITAT 1.1: La calculadora
Indica resultat de les següents operacions:
- Operacions bàsiques:
>>> 2 + 3 >>> 4 – 3 >>> 5 * 3 >>> 8 / 2 >>> 7 % 2 >>> 2**3
- Més d’una operació (prioritat):
1r la potencia 2n canvis de signe (si n’hi ha): Per ex. - (-8) = +8 3r multiplicacions, divisions i mòduls (mateixa prioritat → d'esquerra a dreta) 4t sumes i restes (mateixa prioritat → d'esquerra a dreta)
>>> 4+3+2-5 >>> 2**3**2 (de dreta a esquerra) >>> 5*3+2 >>> 2+5*3 >>> 4/2*3 >>> 3*4/2 >>> 13%5*3 >>> 3*17%5 >>> 2+3-4*6/2**3%2
- Parèntesis per canviar la prioritat:
>>> 4+3+(2-5) >>> (2**3)**2 >>> 5*(3+2) >>> (2+5)*3 >>> 17%(5*3) >>> 3*(17%5) >>> (((2+3-4)*6)/2)**3%2
ACTIVITAT 1.2: Primers tipus de dades: enters(sense decimal) i reals(amb coma flotant)
Enters:
>>> 45 >>> -27
Reals:
>>> 5.25 >>> -8.1
Es poden fer operacions que involucrin els dos tipus i el resultat sempre serà del tipus més general (real).
>>> 45 + 5.25 >>> -27 + 5.25
Compte! Amb les divisions de tipus enter, obtindrem un número real (amb python 2 NO!):
>>> 6 / 3 >>> 7 / 3
però si el que volem és la divisió sencera, aleshores utilitzarem el mètode int():
>>> int(6/3) >>> int(7/3)
ACTIVITAT 1.3: Els operador lógics i de comparació
Un altre tipus de dada: els valors lògics (True o 1, False o 0).
Operadors lògics principals:
- operador de conjunció: and (i lògic).
True si i només si totes les parts són certes.
>>>True and True
Si alguna part és falsa el resultat és Fals.
>>>False and True
- operador de disjunció: or (o lògic)
Si una de les parts és certa el resultat serà cert.
>>>True or False
El resultat és fals només si les dos parts són falses.
>>>False and False
- operador de negació: not (no lògic)
El resultat és el valor lògic oposat
>>>not True >>>not False
Es pot tenir més d’una operació lògica amb una mateixa línia:
>>> True and False and True and True
En aquest cas phyton o resoldrà per l’esquerra:
1r True and False and True and True (True and False → False) False and True and True 2n False and True and True (False and True → False) False and True 3r False and True (False and True → False) False
Es poden tenir operadors lògics diferents amb una mateixa línia:
>>> True and False or not False
En aquest python utilitza una taula de precedència:
1r la negació: True and False or not False (not False → True) True and False or True 2n les conjuncions: True and False or True (True and False → False) False or True 3r les disjuncions: False or True (False or True → False) True
Operadors de comparació: - Igual a
>>> True == False
- Diferent a
>>> True != False
- Major a
>>> 9 > 4
- Menor que
>>> 4 < 5
- Major o igual que
>>> 10 >= 56
- Menor o igual que
>>> 45 <= 45
ACTIVITAT 1.4: Les variables i les assignacions
- Els resultats calculats anteriorment es mostren per pantalla però no es guarden enlloc.
- Les variables s’utilitzen per emmagatzemar dades per a la seva posterior utilització.
- Els programes poden guardar el resultat d'una operació en memòria, utilitzant variables.
- El valor emmagatzemat en una variable es pot canviar a voluntat dins del programa tants cops com calgui: es variable.
- Per distingir una variable de l'altra li posem nom. Per exemple: dni, hora, lloc, ... (es convenient utilitzar noms que ens recordin el que hi ha dins)
- Assignació d’un valor a una variable (primer escollir el nom).
>>> x = 456 (‘=’ operador d’assignació)
- Quan fem enter python emmagatzema la variable x i el seu valor en la memòria.
- Per veure el valor de la variable, només cal escriure-le i prèmer enter.
>>> x
- Canvi del valor de la variable:
>>> x = 788 (després de prèmer enter el valor de la variable x canvía) >>> x
- Compte! No confondre l’assignació amb la comparació.
>>> x = 50 (assignació) >>> x == 79 (comparació)
- Compte! Noms de les variables:
>>> Alçada576 (paraula seguida de números) >>> Alçada_576 (‘_’ es pot fer servir com a separador) >>> 45_alfa (no es pot començar el nom per un número) >>> Gravetat = 9.8 (es poden utilitzar majúscules)
- Compte! No es pot utilitzar com a nom de variables paraules reservades com if, while, repeat, ... ni paraules accentuades com àrea
- Compte! l'assignació d'una dada a una variable va SEMPRE de dreta a esquerra
- Les següents assignacions són incorrectes:
>>> 22 = edat >>> "Pepe" = nom
ACTIVITAT 1.5: Cadenes
- Una cadena és una seqüència de caràcters entre cometes dobles (" ") o simples (' ').
>>>"cases" >>>"0303456"
- Es poden emmagatzemar amb variables:
>>>cadena_prova ="0303456" >>>cadena_prova '0303456'
- Operacions:
- - Suma (concatenació)
>>>"cases" + " blaves" 'cases blaves'
- - Multiplicació (repetició)
>>>"/*-" *5 '/*-/*-/*-/*-/*-'
- Compte! No confondre la concatenació de cadenes amb la suma de nombres enters:
>>> "25" + "25" '2525' >>> 25 + 25 50
- - Comparacions:
- --Iguals
>>> "abecedari" == "abella" False
- Python va comparant caràcter a caràcter i si no troba cap diferent és que són iguals.
- --Diferents
>>> "hola" != "ola" True
- --Menor que
>>> "facultat" < "frase" True
- Python compara el codi ASCII de cada caràcter i quan troba el primer diferent en funció del codi decideix si és menor o no.
- --Major que
>>> "hola" > "adeu" True
ACTIVITAT 1.6: Funcions predefinides
- Són funcions que venen integrades en python i podem utilitzar en els nostres programes.
- Com obtenir el codi ASCII d’un caràcter i viciversa:
>>>ord('a') 97 >>>ord('A') 65 >>>chr(97) 'a' >>>chr(65) 'A'
- Compte! l’ASCII de les majúscules és inferior al de les minúscules.
>>> "Hola" > "adeu" False
>>>abs(-45) # valor absolut 45 >>>float(78) # converteix un número enter a flotant 78.0 >>>float("780") # converteix una cadena que representi un número enter a flotant 780.0 >>>int(45.25) # converteix el paràmetre a un número enter 45 >>>int("789") # converteix una cadena que representi un número enter a enter 789 >>>str(789) # converteix el paràmetre a una cadena '789' >>>str(78.52) '78.52' >>>round(45.87) # arrodoneix un nombre flotant al enter més proper. 46
- pot portar dos paràmetres, el segon paràmetre indica el nombre de decimals a arrodonir:
>>>round(1.256,2) 1.26
- round sempre retorna un nombre de tipus flotant.
ACTIVITAT 1.7: Funcions en mòduls
- Venen integrades en python però cal importar-les abans per poder-les utilitzar.
- En aquet cas veurem el mòdul math que compté funcions matemàtiques.
>>>from math import * #amb * importem totes, es poden importar només les que necessitem >>>ceil(7.2) # redondeig cap amunt 8 >>>floor(7.8) # redondeig cap abaix 7 >>>sqrt(4) # arrel quadrada 2.0
ACTIVITAT 1.8: Els mètodes
- Són funcions especials que varien segons el tipus de dada que estem manegant.
- Exemple:
>>>cad="Cadena de prova"
- Veiem alguns mètodes del tipus cadena:
>>>cad.lower() 'cadena de prova' >>>cad.upper() 'CADENA DE PROVA' >>>cad.title() 'Cadena De Prova' >>>cad.replace("prova","exemple") 'Cadena de exemple'
- Compte! Els mètodes no modifiquen el contingut de la variable cad.
>>>cad 'Cadena de prova'
- Per emmagatzemar la cadena modificada:
>>>cad = cad.title() >>>cad 'Cadena De Prova'
ACTIVITAT 1.9: Introducció als programes
- Càlcul de l’àrea d’un triangle.
- funció print() s’utilitza per escriure un missatge per la consola.
>>>print("Cadena de prova") Cadena de prova
- Programa càlcul de l'àrea d'un triangle
print("Programa Càlcul de l'àrea d'un triangle")
base = 10
alçada = 5
area = base * alçada / 2
print ("El resultat és: ", area)
- Problema! Si volem calcular l’àrea d’un triangle de dimensions diferents hem de modificar el programa.
- Necessitem que l’usuari introdueixi els valors de la base i de l’alçada cada vegada que executi el programa.
- Funció input() per demanar a l'usuari que introdueixi dades
print("Programa Càlcul de l'àrea d'un triangle")
base = float(input("Mida de la base: "))
"""
input() llegeix cadena de caracters i
float() ho converteix a número en coma flotant.
int() si necessitem que sigui enter.
"""
alçada = float(input("Mida de l'alçada: "))
area = base * alçada / 2
print ("El resultat és: ", area)
ACTIVITAT 1.10: Sortida amb format i programes més llegibles
- Sortida amb format:
print("Programa Càlcul de l'àrea d'un triàngle")
base = float(input("Mida de la base: "))
"""
input() llegeix cadena de caracters i
float() ho converteix a número en coma flotant.
int() si necessitem que sigui enter.
"""
alçada = float(input("Mida de l'alçada: "))
area = base * alçada / 2
print ("La base és: %f i l'àrea és: %f " %(base, area))
"""
%d reemplaçar per un valor de tipus enter
%f reemplaçar per un valor de tipus flotant
%c reemplaçar per un valor de tipus cadena
"""
Programa Càlcul de l'àrea d'un triàngle Mida de la base: 5.5 Mida de l'alçada: 6.4 La base és: 5.500000 i l'àrea és: 17.600000
- Per reduir la quantitat de decimals:
- %6.2 implica que el nombre ocuparà en total 6 posicions (tenint en compte el punt) de les quals dues seran decimals.
print("Programa Càlcul de l'àrea d'un triàngle")
base = float(input("Mida de la base: "))
"""
input() llegeix cadena de caracters i
float() ho converteix a número en coma flotant.
int() si necessitem que sigui enter.
"""
alçada = float(input("Mida de l'alçada: "))
area = base * alçada / 2
print ("La base és: %6.2f i l'àrea és: %5.1f " %(base, area))
"""
%6.2 implica que el nombre ocuparà en total 6 posicions (tenint en compte el punt)
de les quals dues seran decimals.
"""
Programa Càlcul de l'àrea d'un triàngle Mida de la base: 5.5 Mida de l'alçada: 6.4 La base és: 5.50 i l'àrea és: 17.6 #base 6 posicions i 2 decimals, are 5 posicions i 1 decimal
- Programes més llegibles per nosaltres o per tercers:
- Separar el programa en blocs.
# Programa per calcular àrees de triangles #Comentaris
print("Programa Càlcul de l'àrea d'un triàngle")
# Entrada de dades
base_triangle = float(input("Mida de la base: ")) #Noms de variables clars i missatges clars per l'usuari
alçada_triangle = float(input("Mida de l'alçada: "))
#Càlcul de l'area
area_triangle = base_triangle * alçada_triangle / 2 #Càlculs clars separant operants d'operadors
#Sortida del resultat
print ("La base és: %6.2f i l'àrea és: %5.1f " %(base_triangle, area_triangle)) #Missatges clars de sortida