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:

  1. Posa oli en la paella.
  2. Calfa la paella al foc.
  3. Quan l’oli estiga calent, trenca l’ou i posa’l dins.
  4. Fes-lo fins que estiga al teu gust.
  5. 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:

  1. Obrir la porta de la rentadora.
  2. Ficar la roba dins.
  3. Afegir detergent i suavitzant.
  4. Seleccionar el programa adequat.
  5. Premre el botó d’inici.
  6. Esperar a que acabe el programa.
  7. 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:

  1. Despertar-se quan sona el despertador.
  2. Vestir-se.
  3. Esmorzar.
  4. Agafar la motxilla preparada.
  5. Eixir de casa.
  6. Caminar o agafar transport fins a l’institut.
  7. Arribar a classe.

Exercici 1. Preparar un suc de taronja

Has de dissenyar un algorisme que explique com preparar un suc de taronja natural.

  1. Escriu les entrades (què necessites).
  2. Escriu el procés (els passos que cal seguir).
  3. Escriu la eixida (quin resultat obtens).
  4. 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.

  1. Escriu les entrades (què necessites: dispositiu, dades, connexió…).
  2. Escriu el procés (els passos fins que envies el missatge).
  3. Escriu la eixida (quin resultat obtens).
  4. 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:

  1. 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.
  2. 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.
  3. 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)

  1. 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.

  2. 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.

  3. 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 o preu.
  • 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):

  1. Parèntesis ()
  2. Potència ^ o **
  3. Multiplicació i divisió * /
  4. Sumes i restes + -
  5. Concatenació + (quan és text)
  6. Relacionals < <= > >= == !=
  7. Negació NOT
  8. Conjunció AND
  9. 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

  1. ((3 + 2) ^ 2 – 15) / 2 * 5
  2. 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
  1. 2 * x + 0.5 + y – 1 / 5 * z
  2. pi * x ^ 2 > y OR 2 * pi * x <= z
  3. 'Don ' + 'Juan' == 'Don Juan' OR 'A' == 'a'
  4. 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.

  1. 24 % 5
  2. 7 / 2 + 2.5
  3. 10.8 / 2 + 2
  4. (4 + 6) * 3 + 2 * (5 - 1)
  5. 5 / 2 + 17 % 3
  6. 7 >= 5 OR 27 <> 8
  7. (45 <= 7) OR NOT (5 >= 7)
  8. 27 % 4 + 15 / 4
  9. 37 / 4 * 4 – 2
  10. (25 >= 7) AND NOT (7 <= 2)
  11. ('H' < 'J') AND ('9' <> '7')
  12. 25 > 20 AND 13 > 5
  13. 10 + 4 < 15 - 3 OR 2 * 5 + 1 > 14 – 2 * 2
  14. 4 * 2 <= 8 OR 2 * 2 < 5 AND 4 > 3 + 1
  15. 10 <= 2 * 5 AND 3 < 4 OR NOT (8 > 7) AND 3 * 2 <= 4 * 2 - 1