Exercicis de pensament computacional: algorismes i programació per blocs — Matemàtiques 1r ESO
En aquest tema aprendràs a pensar com un programador: dividir un problema en passos, escriure'ls en ordre i comprovar què fa l'algorisme. Els programes es descriuen amb blocs en text, com els de Scratch, de manera que no cal tenir cap ordinador davant. Començaràs amb seqüències d'ordres i robots que es mouen per una graella, i amb variables, condicionals i bucles senzills. Després faràs traces de programes que calculen sumes, múltiples, divisors o descomptes, i buscaràs errors. Els exercicis avançats són algorismes més llargs: el m.c.m., el canvi a base 2, el repartiment per eliminació o la constant de Kaprekar. Cada solució va pas a pas i comprova el resultat. Errors típics: confondre l'assignació «x ← x + 1» amb una equació, equivocar-te en el nombre de voltes d'un bucle i oblidar els parèntesis en una fórmula.
Nivell bàsic
Exercici 1
Un robot es mou per una graella de quadrats. Comença a la casella (0, 0), mirant cap al nord (cap amunt). La primera coordenada és la columna (cap a la dreta) i la segona és la fila (cap amunt). El programa, fet amb blocs, és:
quan es clica la bandera verda
avança 3 caselles
gira 90° a la dreta
avança 2 caselles
a) A quina casella acaba el robot i cap a on mira?
b) Quantes caselles ha recorregut en total?
Mostra la solució
a) Comença a (0, 0) mirant al nord. Avança 3 caselles cap amunt i arriba a (0, 3). Gira 90° a la dreta i passa a mirar cap a l'est. Avança 2 caselles cap a la dreta i arriba a (2, 3). Acaba a la casella (2, 3) mirant a l'est.
b) Ha recorregut 3 + 2 = 5 caselles. Els girs no compten com a caselles recorregudes.
Exercici 2
Un personatge dibuixa una figura amb aquest programa de blocs. Cada pas mesura 1 cm.
repeteix 4 vegades
avança 3 passos
gira 90° a la dreta
a) Quina figura dibuixa?
b) Quin és el perímetre de la figura?
c) Quina és l'àrea?
d) Si canviem «repeteix 4 vegades» per «repeteix 3 vegades», el programa encara dibuixa una figura tancada?
Mostra la solució
a) Avança 3 passos, gira 90° i ho fa quatre vegades: torna al punt de sortida. Dibuixa un quadrat de 3 cm de costat.
b) Perímetre: 4 · 3 = 12 cm. També és el nombre total de passos que fa el personatge.
c) Àrea: 3 · 3 = 9 cm2.
d) No. Amb 3 repeticions dibuixa només tres costats i s'acaba en un vèrtex diferent del de sortida: la figura queda oberta, en forma de «U».
Exercici 3
Una variable és com una caixa amb nom on es guarda un valor. Fes la traça d'aquest programa i digues què mostra:
x ← 4
x ← x + 3
x ← x · 2
digues x
Escriu el valor de x després de cada ordre.
Mostra la solució
Després de «x ← 4»: x = 4.
Després de «x ← x + 3»: x = 4 + 3 = 7.
Després de «x ← x · 2»: x = 7 · 2 = 14.
El programa mostra 14. Observa que «x ← x + 3» no és una equació: vol dir «agafa el valor de x, suma-hi 3 i torna a guardar el resultat a x».
Exercici 4
Un programa fa això:
demana un nombre i guarda'l a n
r ← n · 2
r ← r + 5
digues r
a) Què mostra si l'usuari escriu 6?
b) I si escriu 0?
c) Quin nombre ha d'escriure l'usuari perquè el programa mostri 25?
Mostra la solució
a) n = 6; r = 6 · 2 = 12; r = 12 + 5 = 17. Mostra 17.
b) n = 0; r = 0; r = 0 + 5 = 5. Mostra 5.
c) Cal que n · 2 + 5 = 25. Restant 5: n · 2 = 20, i dividint entre 2: n = 10. Comprovació: 10 · 2 = 20 i 20 + 5 = 25.
Exercici 5
Aquest programa decideix què diu segons la nota:
demana la nota
si nota ≥ 5 llavors
digues «aprovat»
si no
digues «suspès»
Què diu el programa si la nota és 4,9? I si és 5? I si és 7,5?
Mostra la solució
Per a 4,9: la condició 4,9 ≥ 5 és falsa, per tant s'executa el «si no» i diu «suspès».
Per a 5: la condició 5 ≥ 5 és certa (el símbol ≥ inclou la igualtat) i diu «aprovat».
Per a 7,5: 7,5 ≥ 5 és certa i diu «aprovat».
Només s'executa una de les dues branques cada vegada.
Exercici 6
Fes la traça del programa següent, anotant el valor de s després de cada volta, i digues què mostra al final:
s ← 0
per i des d'1 fins a 6
s ← s + i
digues s
Mostra la solució
Comença amb s = 0.
i = 1: s = 0 + 1 = 1.
i = 2: s = 1 + 2 = 3.
i = 3: s = 3 + 3 = 6.
i = 4: s = 6 + 4 = 10.
i = 5: s = 10 + 5 = 15.
i = 6: s = 15 + 6 = 21.
Mostra 21, que és la suma dels nombres de l'1 al 6. Comprovació sense bucle: 1 + 6 = 7, 2 + 5 = 7 i 3 + 4 = 7, és a dir, 3 parelles de 7: 3 · 7 = 21.
Exercici 7
Considera el programa:
per i des d'1 fins a 20
si i és múltiple de 3 llavors
digues i
a) Quins nombres diu, en ordre?
b) Quants nombres diu?
c) Què hauríem de canviar perquè digués els múltiples de 5?
Mostra la solució
a) Diu els nombres de l'1 al 20 que són múltiples de 3: 3, 6, 9, 12, 15 i 18.
b) En diu 6. (També es pot calcular: 20 : 3 = 6 amb residu 2, així que hi ha 6 múltiples de 3 fins al 20.)
c) Només cal canviar la condició per «si i és múltiple de 5». Llavors diria 5, 10, 15 i 20.
Exercici 8
Un programa calcula dades d'un quadrat:
demana el costat i guarda'l a c
p ← 4 · c
a ← c · c
digues p
digues a
Fes la traça per a c = 7,5 i digues quines unitats tenen els dos resultats si el costat és en centímetres.
Mostra la solució
Per a c = 7,5: p = 4 · 7,5 = 30 i a = 7,5 · 7,5 = 56,25.
El programa diu primer 30 i després 56,25.
El perímetre p és una longitud: 30 cm. L'àrea a és una superfície: 56,25 cm2.
Exercici 9
La Núria vol un programa que calculi la mitjana de dos nombres a i b, però no li funciona:
m ← a +
digues m
a) Què mostra per a a = 6 i b = 10?
b) Per què és incorrecte?
c) Escriu la línia corregida.
Mostra la solució
a) L'ordre de les operacions fa primer la divisió: b / 2 = 10 / 2 = 5, i després la suma: 6 + 5 = 11. Mostra 11.
b) La mitjana de 6 i 10 és 8, no 11. La divisió només afecta b perquè no hi ha parèntesis.
c) m ← (a + b) / 2. Ara: (6 + 10) / 2 = 16 / 2 = 8.
Exercici 10
Fes la traça d'aquest programa, escrivint el valor de q després de cada volta del bucle:
q ← 5
mentre q < 100
q ← q · 2
digues q
Quantes voltes fa el bucle i què mostra al final?
Mostra la solució
Mentre q sigui menor que 100, es duplica.
q = 5 (5 < 100, entra): q = 10.
10 < 100: q = 20.
20 < 100: q = 40.
40 < 100: q = 80.
80 < 100: q = 160.
160 < 100 és fals i el bucle s'acaba.
Ha fet 5 voltes i mostra 160. Fixa't que el valor final supera 100: la condició es comprova abans de cada volta, no durant.
Nivell intermedi
Exercici 11
Mira aquest programa amb un bucle dins d'un altre:
compta ← 0
per i des d'1 fins a 3
per j des d'1 fins a 4
compta ← compta + 1
digues compta
a) Quantes vegades s'executa l'ordre «compta ← compta + 1»?
b) Què mostra el programa?
c) Si el bucle de dins anés d'1 a 10 i el de fora d'1 a 7, quin valor mostraria?
Mostra la solució
a) El bucle de fora fa 3 voltes i a cada una el de dins en fa 4. Total: 3 · 4 = 12 vegades.
b) A cada execució compta augmenta 1, i comença a 0: mostra 12.
c) 7 · 10 = 70. Quan hi ha un bucle dins d'un altre, el nombre de repeticions és el producte de les voltes de cadascun.
Exercici 12
Fes la traça d'aquest programa amb tres variables:
a ← 0
b ← 1
repeteix 7 vegades
c ← a + b
a ← b
b ← c
digues c
a) Quins nombres diu, en ordre?
b) Descriu amb paraules el patró que segueixen.
c) Quin seria el següent nombre si repetíssim una vegada més?
Mostra la solució
a) Volta 1: c = 0 + 1 = 1; a = 1; b = 1; diu 1.
Volta 2: c = 1 + 1 = 2; a = 1; b = 2; diu 2.
Volta 3: c = 1 + 2 = 3; a = 2; b = 3; diu 3.
Volta 4: c = 2 + 3 = 5; diu 5.
Volta 5: c = 3 + 5 = 8; diu 8.
Volta 6: c = 5 + 8 = 13; diu 13.
Volta 7: c = 8 + 13 = 21; diu 21.
Diu 1, 2, 3, 5, 8, 13, 21.
b) Cada nombre és la suma dels dos anteriors. És la successió de Fibonacci.
c) 13 + 21 = 34.
Exercici 13
Un programa calcula el cost d'un viatge en un taxi imaginari: la baixada de bandera costa 3 €, cada quilòmetre fins a 10 km costa 1,50 € i cada quilòmetre a partir del desè costa 2 €.
demana els quilòmetres i guarda'ls a k
si k ≤ 10 llavors
cost ← 3 + 1,5 · k
si no
cost ← 3 + 1,5 · 10 + 2 · (k − 10)
digues cost
Calcula el que mostra per a k = 4, k = 10 i k = 15.
Mostra la solució
k = 4: 4 ≤ 10 és cert; cost = 3 + 1,5 · 4 = 3 + 6 = 9 €.
k = 10: 10 ≤ 10 és cert; cost = 3 + 1,5 · 10 = 3 + 15 = 18 €.
k = 15: 15 ≤ 10 és fals; cost = 3 + 15 + 2 · (15 − 10) = 18 + 10 = 28 €.
Fixa't que a k = 10 les dues fórmules donen el mateix resultat (18 €): el cost no fa cap salt quan es canvia de tram.
Exercici 14
Fes la traça d'aquest programa per a n = 789 i digues què calcula:
demana un nombre i guarda'l a n
mentre n > 9
n ← suma de les xifres de n
digues n
Escriu el valor de n després de cada volta. Després prova-ho amb n = 99.
Mostra la solució
n = 789 (és més gran que 9, entra al bucle): suma de xifres 7 + 8 + 9 = 24, i ara n = 24.
24 > 9: 2 + 4 = 6, i ara n = 6.
6 > 9 és fals: el bucle s'acaba i mostra 6.
Per a n = 99: 9 + 9 = 18; 1 + 8 = 9; mostra 9.
El programa repeteix la suma de xifres fins que només queda una xifra. El resultat coincideix amb el residu de dividir el nombre entre 9 (si el residu és 0, el programa dona 9). Comprovació: 789 : 9 = 87 amb residu 6.
Exercici 15
Un any és de traspàs si és múltiple de 4, tret que sigui múltiple de 100; però els múltiples de 400 sí que ho són. L'algorisme és:
demana l'any
si l'any és múltiple de 400 llavors digues «traspàs»
si no, si l'any és múltiple de 100 llavors digues «no traspàs»
si no, si l'any és múltiple de 4 llavors digues «traspàs»
si no digues «no traspàs»
Digues què respon per als anys 1900, 2000, 2024 i 2026.
Mostra la solució
1900: no és múltiple de 400 (1900 : 400 = 4,75); sí és múltiple de 100 (19 · 100). Diu «no traspàs».
2000: és múltiple de 400 (5 · 400). Diu «traspàs».
2024: no és múltiple de 400 ni de 100; però 2024 : 4 = 506 exacte. Diu «traspàs».
2026: no és múltiple de 400, ni de 100, ni de 4 (2026 : 4 = 506 amb residu 2). Diu «no traspàs».
L'ordre de les preguntes és important: si preguntéssim primer pels múltiples de 4, el 1900 sortiria malament.
Exercici 16
Aquest programa compta els divisors d'un nombre:
demana un nombre i guarda'l a m
compta ← 0
per d des d'1 fins a m
si m és múltiple de d llavors
compta ← compta + 1
digues compta
a) Què mostra per a m = 36?
b) Què mostra per a m = 29 i per a m = 21?
c) Un nombre és primer si té exactament 2 divisors. Quins dels nombres 36, 29 i 21 són primers?
Mostra la solució
a) Els divisors de 36 són 1, 2, 3, 4, 6, 9, 12, 18 i 36. Són 9 divisors: mostra 9.
b) 29 només és múltiple d'1 i de 29 (no és divisible per cap nombre de 2 a 28): mostra 2. 21 és múltiple d'1, 3, 7 i 21: mostra 4.
c) Només 29 té exactament 2 divisors, per tant és l'únic primer dels tres. 36 i 21 són compostos.
Exercici 17
Una màquina expenedora ha de tornar 87 cèntims de canvi. Té monedes de 50, 20, 10, 5, 2 i 1 cèntims, i fa servir aquest algorisme:
resta ← 87
per cada moneda m en l'ordre 50, 20, 10, 5, 2, 1
mentre resta ≥ m
entrega una moneda de m
resta ← resta − m
a) Quines monedes entrega i en quin ordre?
b) Quantes monedes són en total?
c) Es podria tornar el canvi amb menys monedes?
Mostra la solució
a) resta = 87. Moneda de 50: 87 ≥ 50, entrega-la i resta = 37; 37 ≥ 50 és fals.
Moneda de 20: 37 ≥ 20, entrega-la i resta = 17.
Moneda de 10: 17 ≥ 10, entrega-la i resta = 7.
Moneda de 5: 7 ≥ 5, entrega-la i resta = 2.
Moneda de 2: 2 ≥ 2, entrega-la i resta = 0.
Moneda d'1: no cal.
Entrega: 50, 20, 10, 5 i 2 cèntims.
b) 5 monedes. Comprovació: 50 + 20 + 10 + 5 + 2 = 87.
c) No. Si es proven totes les combinacions possibles de 4 monedes d'aquest sistema, cap suma 87; per tant 5 és el mínim i, en aquest cas, l'algorisme dona la millor solució.
Exercici 18
Un robot comença a (0, 0) mirant cap al nord (la primera coordenada és la columna cap a la dreta i la segona la fila cap amunt). Executa:
repeteix 4 vegades
avança 2 caselles
gira 90° a l'esquerra
avança 2 caselles
gira 90° a la dreta
a) A quina casella arriba al final de la primera repetició?
b) I al final del programa, i cap a on mira?
c) Quantes caselles ha recorregut?
Mostra la solució
a) Primera repetició: avança 2 al nord i arriba a (0, 2); gira a l'esquerra i mira a l'oest; avança 2 i arriba a (−2, 2); gira a la dreta i torna a mirar al nord.
b) Cada repetició el desplaça 2 cap a l'oest i 2 cap al nord, i el deixa mirant al nord. Després de 4 repeticions: (−8, 8), mirant al nord.
c) Cada repetició són 2 + 2 = 4 caselles, i 4 · 4 = 16 caselles. El robot fa una escala cap amunt i cap a l'esquerra.
Exercici 19
Una botiga fictícia aplica un descompte del 20 % a les compres de 50 € o més:
demana l'import i guarda'l a p
si p ≥ 50 llavors
p ← p − 0,2 · p
digues p
a) Què mostra per a 40 €, per a 50 € i per a 65 €?
b) Una persona té una compra de 48 €. Li interessa afegir-hi un article de 3 € per arribar a 51 €? Raona-ho amb els resultats.
Mostra la solució
a) 40 €: 40 ≥ 50 és fals; no hi ha descompte i mostra 40.
50 €: 50 ≥ 50 és cert; p = 50 − 0,2 · 50 = 50 − 10 = 40. Mostra 40.
65 €: p = 65 − 0,2 · 65 = 65 − 13 = 52. Mostra 52.
b) Sense l'article paga 48 €. Amb l'article, 51 − 0,2 · 51 = 51 − 10,2 = 40,80 €. Li surt millor afegir-lo: paga menys (40,80 € en lloc de 48 €) i s'emporta un article més.
Exercici 20
Per calcular 1 + 2 + 3 + … + 60, el Pau escriu aquest programa i la Laia fa un càlcul directe:
s ← 0
per i des d'1 fins a 60
s ← s + i
digues s
La Laia fa: 60 : 2 = 30 parelles que sumen 61 cadascuna (1 + 60, 2 + 59, …).
a) Quin resultat dona la Laia?
b) Quantes sumes fa el programa del Pau?
c) Quina de les dues maneres és més ràpida i per què?
Mostra la solució
a) Hi ha 30 parelles de 61: 30 · 61 = 1.830. El programa del Pau mostrarà també 1.830.
b) El bucle fa 60 voltes i a cada una hi ha una suma: 60 sumes.
c) La de la Laia: només cal una divisió i una multiplicació en lloc de 60 sumes. Dos algorismes poden donar el mateix resultat amb molta diferència de passos; això és el que importa quan s'han de fer càlculs amb quantitats molt grans.
Nivell avançat
Exercici 21
Un programa escriu un dibuix amb estrelles:
per i des d'1 fins a 5
repeteix i vegades
escriu *
baixa a la línia següent
a) Dibuixa què escriu (quantes estrelles hi ha a cada línia).
b) Quantes estrelles s'escriuen en total?
c) I si el bucle de fora anés fins a 20 en lloc de 5? Explica com ho pots calcular sense escriure-les.
Mostra la solució
a) A la línia i s'escriuen i estrelles: línia 1: *; línia 2: **; línia 3: ***; línia 4: ****; línia 5: *****. Forma un triangle.
b) 1 + 2 + 3 + 4 + 5 = 15 estrelles.
c) Seria 1 + 2 + … + 20. Agrupem en parelles que sumen 21: (1 + 20), (2 + 19), … Hi ha 10 parelles: 10 · 21 = 210 estrelles.
Exercici 22
Aquest programa busca un nombre que sigui múltiple de dos nombres a i b:
demana a i b
m ← a
mentre m no sigui múltiple de b
m ← m + a
digues m
a) Fes la traça per a a = 12 i b = 18 i digues quantes voltes fa el bucle.
b) Fes-la per a a = 15 i b = 25.
c) Què calcula el programa en realitat? Per què podem estar segurs que el resultat és el més petit possible?
Mostra la solució
a) m = 12: 12 no és múltiple de 18, m = 24. 24 no és múltiple de 18, m = 36. 36 = 2 · 18 és múltiple de 18: s'acaba. Mostra 36 després de 2 voltes.
b) m = 15 (no múltiple de 25) → 30 → 45 → 60 → 75. 75 = 3 · 25. Mostra 75 després de 4 voltes.
c) Calcula el mínim comú múltiple (m.c.m.) de a i b. Com que m només passa per múltiples de a, i va augmentant de menor a major, el primer que també és múltiple de b és el més petit dels múltiples comuns. Comprovació: m.c.m.(12, 18) = 36 i m.c.m.(15, 25) = 75.
Exercici 23
Els ordinadors guarden els nombres en base 2 (només amb 0 i 1). Aquest algorisme escriu un nombre en base 2:
demana un nombre i guarda'l a n
mentre n > 0
anota el residu de dividir n entre 2
n ← quocient de dividir n entre 2
llegeix els residus anotats, de l'últim al primer
a) Aplica'l a n = 45 i escriu el resultat.
b) Comprova'l calculant el valor del resultat: cada xifra val una potència de 2 (…, 32, 16, 8, 4, 2, 1).
Mostra la solució
a) 45 : 2 = 22, residu 1.
22 : 2 = 11, residu 0.
11 : 2 = 5, residu 1.
5 : 2 = 2, residu 1.
2 : 2 = 1, residu 0.
1 : 2 = 0, residu 1.
Llegint els residus de l'últim al primer: 1, 0, 1, 1, 0, 1. Així 45 s'escriu 101101 en base 2.
b) 1 · 32 + 0 · 16 + 1 · 8 + 1 · 4 + 0 · 2 + 1 · 1 = 32 + 8 + 4 + 1 = 45. Coincideix.
Exercici 24
Una persona decideix estalviar d'aquesta manera: el dia 1 posa 1 cèntim a la guardiola i cada dia posa el doble que el dia anterior (només es compta el que posa aquell dia).
dia ← 1
quantitat ← 1
mentre quantitat ≤ 1000
dia ← dia + 1
quantitat ← quantitat · 2
digues dia
digues quantitat
a) Fes la traça i digues què mostra.
b) Escriu la quantitat que posa el dia 11 com una potència de 2.
c) Quina és la primera quantitat diària que supera els 1.000 cèntims?
Mostra la solució
a) dia 1: 1; dia 2: 2; dia 3: 4; dia 4: 8; dia 5: 16; dia 6: 32; dia 7: 64; dia 8: 128; dia 9: 256; dia 10: 512 (512 ≤ 1000, encara entra); dia 11: 1024 (1024 ≤ 1000 és fals, s'atura). Mostra 11 i 1024.
b) El dia d es posen 2d − 1 cèntims: el dia 11, = 1024 cèntims.
c) És 1024 cèntims (10,24 €), el dia 11. El creixement per duplicacions és molt ràpid: ja el dia 11 es posen més de 10 euros.
Exercici 25
Es pot formar un triangle amb tres segments només si la suma dels dos més curts és més gran que el més llarg. L'algorisme següent classifica tres longituds a, b i c (suposem que ja estan ordenades de menor a major):
si a + b ≤ c llavors digues «no és triangle»
si no, si a = c llavors digues «equilàter»
si no, si a = b o b = c llavors digues «isòsceles»
si no digues «escalè»
Digues què respon per a (a, b, c) = (3, 4, 8), (5, 5, 5), (6, 6, 9) i (7, 8, 10).
Mostra la solució
(3, 4, 8): 3 + 4 = 7 ≤ 8, per tant «no és triangle».
(5, 5, 5): 5 + 5 = 10 > 5, sí que és triangle; a = c (5 = 5), per tant «equilàter».
(6, 6, 9): 6 + 6 = 12 > 9; a ≠ c (6 ≠ 9); a = b (6 = 6), per tant «isòsceles».
(7, 8, 10): 7 + 8 = 15 > 10; a ≠ c; a ≠ b i b ≠ c; per tant «escalè».
La pregunta de si és triangle ha d'anar primer: si no, el programa podria classificar com a «escalè» o «isòsceles» tres segments amb què no es pot construir cap triangle.
Exercici 26
Deu persones numerades de l'1 al 10 se seuen en rotllana i juguen així: es comença a comptar des de l'1 dient «salvat, eliminat, salvat, eliminat, …» i qui rep «eliminat» surt del cercle. El compte continua amb la persona següent que queda al cercle, fins que només en queda una. L'algorisme és:
repeteix mentre quedi més d'una persona
la persona següent queda salvada
la persona següent a aquesta s'elimina
a) En quin ordre s'eliminen?
b) Qui es salva al final?
c) Si en comptes de 10 persones fossin 8, qui es salvaria?
Mostra la solució
a) Primera volta: es salva l'1 i s'elimina el 2; es salva el 3 i s'elimina el 4; es salva el 5 i s'elimina el 6; es salva el 7 i s'elimina el 8; es salva el 9 i s'elimina el 10. Queden 1, 3, 5, 7 i 9, i el compte continua a l'1.
Segona volta: es salva l'1 i s'elimina el 3; es salva el 5 i s'elimina el 7; es salva el 9 i s'elimina l'1. Queden 5 i 9 i el compte continua al 5: es salva el 5 i s'elimina el 9.
Ordre d'eliminació: 2, 4, 6, 8, 10, 3, 7, 1, 9.
b) Es salva el 5.
c) Amb 8 persones s'eliminen 2, 4, 6 i 8 a la primera volta; queden 1, 3, 5 i 7. Després s'eliminen el 3 i el 7, i al final el 5. Es salva l'1. (Quan hi ha una quantitat de persones que és una potència de 2, sempre es salva la primera.)
Exercici 27
Volem tancar un corral rectangular amb 24 m de tanca (és el perímetre). Aquest programa prova les mides possibles per a la base b, en metres enters:
millor ← 0
per b des d'1 fins a 11
h ← 12 − b
area ← b · h
si area > millor llavors
millor ← area
mesura ← b
digues mesura
digues millor
a) Per què l'altura és h = 12 − b?
b) Calcula l'àrea per a b = 1, 2, 3, 4, 5 i 6, i continua amb la simetria fins a 11.
c) Què mostra el programa? Quina forma té el corral òptim?
Mostra la solució
a) El perímetre és 2 · b + 2 · h = 24, per tant b + h = 12 i h = 12 − b.
b) b = 1: 1 · 11 = 11; b = 2: 2 · 10 = 20; b = 3: 3 · 9 = 27; b = 4: 4 · 8 = 32; b = 5: 5 · 7 = 35; b = 6: 6 · 6 = 36. Després els valors es repeteixen en ordre invers: b = 7: 35; b = 8: 32; b = 9: 27; b = 10: 20; b = 11: 11.
c) La variable «millor» va augmentant fins a 36 (quan b = 6) i cap valor posterior no la supera. Mostra 6 i 36. El corral òptim és un quadrat de 6 m de costat, amb una àrea de 36 .
Exercici 28
Avui és dilluns. Volem saber quin dia de la setmana serà d'aquí a 100 dies. Fem servir aquest algorisme:
n ← 100
mentre n ≥ 7
n ← n − 7
avança n dies a partir d'avui
a) Quantes voltes fa el bucle i quin valor té n al final?
b) Quin dia de la setmana serà?
c) Quina relació hi ha entre el valor final de n i la divisió 100 : 7?
Mostra la solució
a) Cada volta resta una setmana (7 dies). Mentre quedi com a mínim 7 es continua restant: 100 − 14 · 7 = 100 − 98 = 2. Com que 2 < 7, s'atura. Fa 14 voltes i n = 2.
b) Passades 14 setmanes senceres tornem a ser en dilluns; encara falten 2 dies: dimarts i dimecres. Serà dimecres.
c) El valor final de n és el residu de la divisió 100 : 7 = 14 amb residu 2, i el nombre de voltes és el quocient, 14. Restar repetidament és el mateix que dividir.
Exercici 29
Una alumna ha escrit un programa que havia de mostrar la suma dels múltiples de 4 de l'1 al 30, però té dos errors:
s ← 0
per i des d'1 fins a 30
si i = 4 llavors
s ← s + 1
digues s
a) Què mostra el programa tal com està?
b) Quins són els dos errors?
c) Escriu el programa correcte i digues quin resultat dona.
Mostra la solució
a) Només quan i = 4 s'executa «s ← s + 1»; així s passa de 0 a 1 i el programa mostra 1.
b) Error 1: la condició «i = 4» només detecta el 4; hauria de ser «i és múltiple de 4». Error 2: «s ← s + 1» suma 1 en lloc de sumar el valor d'i.
c) Correcte: s ← 0; per i des d'1 fins a 30: si i és múltiple de 4 llavors s ← s + i; digues s.
Els múltiples de 4 fins al 30 són 4, 8, 12, 16, 20, 24 i 28. La suma és 4 + 8 + 12 + 16 + 20 + 24 + 28 = 112. Comprovació: 4 · (1 + 2 + … + 7) = 4 · 28 = 112.
Exercici 30
El nombre 6174 té una propietat sorprenent. Fes servir aquest algorisme amb un nombre de 4 xifres que no tingui totes les xifres iguals:
demana un nombre de 4 xifres i guarda'l a n
mentre n ≠ 6174
gran ← les xifres de n ordenades de major a menor
petit ← les xifres de n ordenades de menor a major
n ← gran − petit
digues n
a) Fes la traça per a n = 3524 (si el resultat té menys de 4 xifres, hi afegeixes zeros a l'esquerra en ordenar-lo).
b) Quantes voltes fa el bucle?
c) Comprova que, si n és 6174, l'operació torna a donar 6174.
Mostra la solució
a) Volta 1: xifres 3, 5, 2, 4. gran = 5432; petit = 2345. n = 5432 − 2345 = 3087.
Volta 2: xifres 3, 0, 8, 7. gran = 8730; petit = 0378 = 378. n = 8730 − 378 = 8352.
Volta 3: xifres 8, 3, 5, 2. gran = 8532; petit = 2358. n = 8532 − 2358 = 6174. Ara n = 6174 i el bucle s'atura.
b) 3 voltes. Mostra 3087, 8352 i 6174.
c) Per a 6174: gran = 7641 i petit = 1467, i 7641 − 1467 = 6174. Per això s'anomena la constant de Kaprekar: és un «punt fix» de l'algorisme, i qualsevol nombre de 4 xifres no totes iguals hi acaba arribant en un màxim de 7 voltes.
T'encalles amb aquest tema?
A L'Acadèmia de Vic t'ajudem amb classes individuals. Escriu-nos per WhatsApp.
Escriu-nos per WhatsApp (604 95 79 95)Més informació: Reforç d'ESO a Vic · Classes particulars
Preguntes freqüents
Què és un algorisme?
És una llista ordenada i precisa de passos que serveix per resoldre un problema. Per exemple, les instruccions per calcular la mitjana de dos nombres o per dibuixar un quadrat són algorismes.
Què vol dir fer la traça d'un programa?
Vol dir executar-lo a mà, pas a pas, anotant el valor de cada variable després de cada ordre. És la millor manera de comprovar què fa un algorisme i de trobar-hi errors.
Quina diferència hi ha entre un bucle «repeteix» i un bucle «mentre»?
Un bucle «repeteix n vegades» fa un nombre de voltes que ja se sap per endavant. Un bucle «mentre» comprova una condició abans de cada volta i s'atura quan deixa de ser certa, de manera que el nombre de voltes pot dependre de les dades.
Cal saber programar per fer aquests exercicis?
No. Els programes s'escriuen amb blocs en text i només cal seguir-ne les instruccions amb paper i llapis. Els conceptes (variable, condició, bucle) s'expliquen amb els mateixos exercicis.