0. Fonaments de programació
1. Introducció
La raó principal per la qual utilitzem un ordinador és per a resoldre problemes. Açò vol dir que partim d’uns dades d’entrada, l’ordinador fa un processament i ens torna uns resultats d’eixida.
Un ordinador, per si mateix, no sap resoldre cap problema. Necessita que una persona li done instruccions clares i ordenades. Este conjunt d’instruccions és el que anomenem programa.
Un programa informàtic no és més que un mètode per a resoldre un problema. Per això, abans d’escriure’l, hem de saber exactament què volem resoldre i com ho farem.
El paper del programador és fonamental:
- Identificar les dades d’entrada (el que coneixem al principi).
- Determinar les dades d’eixida (el resultat que volem obtindre).
- Definir el procés o mètode per a transformar les entrades en eixides.
Este mètode per a resoldre problemes és el que anomenem algorisme.
2. Algorisme
Un algorisme és un conjunt d’operacions ordenades i finides que permeten resoldre un problema.
Perquè un algorisme siga vàlid, ha de complir estes característiques:
- Tindre un nombre limitat de passos.
- Acabar en un temps finit (si no, el problema mai es resoldria).
- Cada pas ha d’estar ben definit i sense ambigüitats.
- Pot tindre diversos valors d’entrada, però sempre ha de produir almenys un resultat d’eixida.
Exemple 1
Un algorisme és com una recepta de cuina.
- Entrades: ingredients (pa, oli, ou).
- Procés: passos de la recepta.
- Eixida: el plat acabat.
Algorisme per a fregir un ou
- Dades d’entrada: ou, oli, paella, foc.
- Dades d’eixida: ou fregit.
Procediment:
- Posa oli en la paella.
- Calfa la paella al foc.
- Quan l’oli estiga calent, trenca l’ou i posa’l dins.
- Fes-lo fins que estiga al teu gust.
- Retira l’ou fregit.
Quan este algorisme es traduïx a un llenguatge de programació, obtenim un programa.
Exemple 2. Posar la rentadora
- Entrades: roba bruta, detergent, rentadora.
- Procés: passos per a introduir la roba i configurar el programa.
- Eixida: roba neta.
Algorisme per a posar la rentadora
- Dades d’entrada: roba, detergent, suavitzant, programa de rentat.
- Dades d’eixida: roba rentada.
Procediment:
- Obrir la porta de la rentadora.
- Ficar la roba dins.
- Afegir detergent i suavitzant.
- Seleccionar el programa adequat.
- Premre el botó d’inici.
- Esperar a que acabe el programa.
- Traure la roba neta.
Exemple 3. Anar a l’institut
- Entrades: persona, roba, motxilla.
- Procés: passos del matí abans d’eixir de casa.
- Eixida: arribar a l’institut.
Algorisme per a anar a l’institut
- Dades d’entrada: despertador, roba, esmorzar, motxilla.
- Dades d’eixida: persona a l’institut.
Procediment:
- Despertar-se quan sona el despertador.
- Vestir-se.
- Esmorzar.
- Agafar la motxilla preparada.
- Eixir de casa.
- Caminar o agafar transport fins a l’institut.
- Arribar a classe.
Exercici 1. Preparar un suc de taronja
Has de dissenyar un algorisme que explique com preparar un suc de taronja natural.
- Escriu les entrades (què necessites).
- Escriu el procés (els passos que cal seguir).
- Escriu la eixida (quin resultat obtens).
- Redacta l’algorisme complet amb les dades d’entrada, les dades d’eixida i el procediment pas a pas.
Exercici 2. Enviar un missatge amb el mòbil
Has de dissenyar un algorisme que descriga com enviar un missatge de text (WhatsApp, Telegram o SMS) amb el mòbil.
- Escriu les entrades (què necessites: dispositiu, dades, connexió…).
- Escriu el procés (els passos fins que envies el missatge).
- Escriu la eixida (quin resultat obtens).
- Redacta l’algorisme complet amb les dades d’entrada, les dades d’eixida i el procediment pas a pas.
3. Cicle de vida d’un programa
Quan creem un programa informàtic, normalment seguim tres fases principals:
-
Definició
- Ací decidim què volem resoldre i què necessitem per a fer-ho.
- Es definixen les dades d’entrada (el que tenim), els resultats esperats (el que volem obtindre) i les condicions del problema.
-
Desenvolupament
- És el moment de dissenyar l’algorisme i transformar-lo en un programa escrit en un llenguatge de programació.
- Els problemes grans es poden dividir en subproblemes més menuts (açò s’anomena disseny descendent).
- En esta fase també s’usen eines com pseudocodi o diagrames de flux per a organitzar les idees abans de programar.
-
Manteniment
- Una vegada el programa funciona, cal provar-lo, corregir errors i anar-lo actualitzant.
- Ací és on es diferencia si el llenguatge utilitzat és interpretat (l’ordinador l’executa instrucció a instrucció) o compilat (primer es tradueix tot el programa i després s’executa més ràpid).
4. Documentació
En tot programa és molt important la documentació, que pot ser:
- Interna: comentaris dins del codi, que expliquen què fa cada part.
- Externa: manuals d’usuari, guies de manteniment o documents amb el disseny del programa.
La documentació servix perquè altres persones (o nosaltres mateixos en el futur) puguen entendre, utilitzar i modificar el programa més fàcilment.
Exercici 3 (Qüestions)
-
En quina fase del cicle de vida decidiries quines dades són d’entrada i quines són d’eixida d’un programa? Explica-ho amb un exemple.
-
Per què és útil dividir un problema gran en subproblemes més menuts abans de programar? Escriu un exemple quotidià on es puga aplicar esta idea.
-
Imagina que un company troba un error en un programa que has fet.
- A quina fase del cicle de vida correspon arreglar-lo?
- Com ajudaria la documentació interna a resoldre el problema més ràpidament?
5. Objectes d’un programa
En un programa podem trobar elements que les instruccions poden manipular. A estos elements els anomenem objectes del programa.
Els objectes poden ser tant les dades d’entrada (informació inicial) com les dades d’eixida (resultats).
Cada objecte té tres atributs:
- Nom: el seu identificador, com ara
nota
opreu
. - Tipus: el conjunt de valors que pot prendre (nombre enter, decimal, text, vertader/fals…).
- Valor: el contingut concret en un moment determinat.
5.1 Constants
Una constant és un objecte el valor del qual no canvia durant tota l’execució del programa.
Serveixen per donar nom a valors concrets i així fer el codi més clar i fàcil de modificar.
Exemples de constants matemàtiques:
PI = 3.141592
E = 2.718281
Exemple pràctic: Si sempre sumem l’IVA 0.21, és millor declarar:
IVA = 0.21
i utilitzar IVA
al programa, en compte d’escriure 0.21
moltes vegades. Així, si canvia el valor, només cal modificar-lo una vegada.
5.2 Variables
Una variable és un objecte el valor del qual pot canviar durant l’execució del programa.
Exemples:
- Una variable per a guardar la nota mitjana d’un alumne.
- Una variable per calcular el total d’una factura.
- Una variable per a la temperatura en un programa de control.
5.3 Expressions
Una expressió combina constants, variables i operadors, i produïx un resultat.
Les expressions poden ser de tres tipus principals:
-
Numèriques: produeixen un valor numèric. Exemple:
(2 * x) / 3
-
Alfanumèriques (text): produeixen cadenes de text. Exemple:
"Hola " + "Món"
→"Hola Món"
-
Booleanes o lògiques: produeixen vertader o fals. Exemple:
(a > 1) AND (b < 5)
5.4 Operadors
Els operadors són símbols que ens permeten fer operacions amb les dades dins d’una expressió.
Operadors aritmètics
Operador | Significat | Exemple | Resultat |
---|---|---|---|
+ | Suma | 3 + 2 | 5 |
- | Resta | 5 - 2 | 3 |
* | Multiplicació | 4 * 2 | 8 |
/ | Divisió real | 7 / 2 | 3.5 |
// o div | Divisió entera | 7 // 2 | 3 |
% | Mòdul (residu) | 7 % 2 | 1 |
^ o ** | Potència | 2 ^ 3 | 8 |
Operadors relacionals
Operador | Significat | Exemple | Resultat |
---|---|---|---|
== | Igualtat | 5 == 5 | Vertader |
!= | Diferent | 5 != 3 | Vertader |
< | Menor que | 3 < 7 | Vertader |
> | Major que | 7 > 3 | Vertader |
<= | Menor o igual que | 5 <= 5 | Vertader |
>= | Major o igual que | 6 >= 9 | Fals |
Operadors lògics (booleans)
Operador | Significat | Exemple | Resultat |
---|---|---|---|
NOT | Negació | NOT (5 > 3) | Fals |
AND | Conjunció | (5 > 3) AND (2 < 4) | Vertader |
OR | Disjunció | (5 > 3) OR (2 > 10) | Vertader |
Operador alfanumèric (concatenació)
Operador | Significat | Exemple | Resultat |
---|---|---|---|
+ | Unir cadenes de text | “Hola “ + “Món” | “Hola Món” |
Ordre d’avaluació dels operadors
Quan resols una expressió, cal seguir este ordre (de més a menys prioritat):
- Parèntesis
()
- Potència
^
o**
- Multiplicació i divisió
* /
- Sumes i restes
+ -
- Concatenació
+
(quan és text) - Relacionals
< <= > >= == !=
- Negació
NOT
- Conjunció
AND
- Disjunció
OR
Exercici 4. Variables i operadors
La següent taula mostra un algorisme pas a pas (llista d’instruccions). Utilitza tres variables A
, B
i C
que inicialment valen 4
, 2
i 3
respectivament.
Tasques:
- Calcula el valor de les variables després d’executar cada instrucció.
- Ompli la taula amb els resultats corresponents.
Recorda que X = Y
significa que el valor de Y
es copia en X
.
Instrucció | A | B | C |
---|---|---|---|
Inicial | 4 | 2 | 3 |
1. A = B | |||
2. C = A | |||
3. B = (A + B + C) / 2 | |||
4. A = A + C | |||
5. C = B - A | |||
6. C = C - A | |||
7. A = A * B | |||
8. A = A + 3 | |||
9. A = A % B | |||
10. C = C + A |
Excerci 5. Avalua les següents expressions
1. Sense variables prèvies
((3 + 2) ^ 2 – 15) / 2 * 5
5 – 2 > 4 AND NOT 0.5 == 1 / 2
2. Donades les variables i constants
x = 1
y = 4
z = 10
pi = 3.14
e = 2.71
2 * x + 0.5 + y – 1 / 5 * z
pi * x ^ 2 > y OR 2 * pi * x <= z
'Don ' + 'Juan' == 'Don Juan' OR 'A' == 'a'
e ^ (x – 1) / (x * z) / (x / z)
Excerci 6. Diferència entre variable i constant
Explica amb les teues paraules quina és la diferència entre una variable i una constant dins d’un programa. Inclou 2 o 3 exemples de la vida real per a cada cas (variable i constant).
Excerci 7. Avalua les següents expressions
Calcula el resultat de cada expressió (numèrica o booleana), respectant l’ordre d’avaluació dels operadors.
24 % 5
7 / 2 + 2.5
10.8 / 2 + 2
(4 + 6) * 3 + 2 * (5 - 1)
5 / 2 + 17 % 3
7 >= 5 OR 27 <> 8
(45 <= 7) OR NOT (5 >= 7)
27 % 4 + 15 / 4
37 / 4 * 4 – 2
(25 >= 7) AND NOT (7 <= 2)
('H' < 'J') AND ('9' <> '7')
25 > 20 AND 13 > 5
10 + 4 < 15 - 3 OR 2 * 5 + 1 > 14 – 2 * 2
4 * 2 <= 8 OR 2 * 2 < 5 AND 4 > 3 + 1
10 <= 2 * 5 AND 3 < 4 OR NOT (8 > 7) AND 3 * 2 <= 4 * 2 - 1