Tornar a la portadaTecnologia i Enginyeria I · 1r Batx. Ciències · Canviar d'assignatura
Començar gratis
Apunts

Exercicis: Les estructures d'un programa

Practica★☆☆
Explica què és una variable en un programa i posa un exemple: quin nom i quin contingut tindria una variable en un videojoc que guarda els punts del jugador. Quina…

Explica què és una variable en un programa i posa un exemple: quin nom i quin contingut tindria una variable en un videojoc que guarda els punts del jugador. Quina operació canviaria el seu valor en superar un nivell?

Resoldre
Practica★☆☆
Explica què és una estructura condicional (si... llavors... si no...) i escriu dos exemples de decisions quotidianes expressades amb aquesta estructura, indicant la…

Explica què és una estructura condicional (si... llavors... si no...) i escriu dos exemples de decisions quotidianes expressades amb aquesta estructura, indicant la condició i les dues accions possibles.

Resoldre
Practica★☆☆
Explica què és un bucle i quin problema resol enfront de repetir les mateixes instruccions moltes vegades. Escriu en pseudocodi un bucle que escrigui els nombres de l'1…

Explica què és un bucle i quin problema resol enfront de repetir les mateixes instruccions moltes vegades. Escriu en pseudocodi un bucle que escrigui els nombres de l'1 al 5.

Resoldre
Practica★☆☆
Explica la diferència entre una variable i una constant en un programa, amb un exemple de cadascuna en un programa de facturació (el preu del producte enfront del…

Explica la diferència entre una variable i una constant en un programa, amb un exemple de cadascuna en un programa de facturació (el preu del producte enfront del percentatge d'IVA).

Resoldre
Practica★☆☆
Les dades d'un programa tenen tipus: enter, decimal, text o booleà. Indica el tipus més adequat per a cada dada i justifica-ho: l'edat d'una persona, la seva alçada en…

Les dades d'un programa tenen tipus: enter, decimal, text o booleà. Indica el tipus més adequat per a cada dada i justifica-ho: l'edat d'una persona, la seva alçada en metres, el seu nom i si ha aprovat o no.

Resoldre
Practica★☆☆
Explica què és una funció en un programa i dos avantatges de trossejar el codi en funcions amb nom (reutilitzar sense copiar, entendre i provar cada part per separat).

Explica què és una funció en un programa i dos avantatges de trossejar el codi en funcions amb nom (reutilitzar sense copiar, entendre i provar cada part per separat).

Resoldre
Practica★☆☆
Què és un comentari en el codi font? Explica a qui van dirigits els comentaris (no pas a l'ordinador, sinó a qui llegirà el codi després) i què ha d'explicar un bon…

Què és un comentari en el codi font? Explica a qui van dirigits els comentaris (no pas a l'ordinador, sinó a qui llegirà el codi després) i què ha d'explicar un bon comentari (el perquè de les decisions, no el que ja es veu).

Resoldre
Practica★☆☆
Llegeix aquest fragment i fes-ne la traça: Indica quin valor es mostra per pantalla i explica per què la segona instrucció no és una equació matemàtica sinó una…

Llegeix aquest fragment i fes-ne la traça:

inici

    x ← 4

    x ← x + 2

    escriure x

fi

Indica quin valor es mostra per pantalla i explica per què la segona instrucció no és una equació matemàtica sinó una assignació.

Resoldre
Practica★★☆
Llegeix aquest programa en pseudocodi: Fes la traça pas a pas (valor de suma i de n al final de cada volta) i indica quantes vegades es repeteix el bucle i quin valor…

Llegeix aquest programa en pseudocodi:

inici

    suma ← 0

    n ← 1

    mentre n ≤ 5 fer

        suma ← suma + n

        n ← n + 1

    fi mentre

    escriure suma

fi

Fes la traça pas a pas (valor de suma i de n al final de cada volta) i indica quantes vegades es repeteix el bucle i quin valor s'escriu al final.

Resoldre
Practica★★☆
Escriu en pseudocodi un programa que llegeixi la nota d'un examen (un nombre de 0 a 10) i escrigui «apte» si la nota és 5 o més gran, i «no apte» en cas contrari.…

Escriu en pseudocodi un programa que llegeixi la nota d'un examen (un nombre de 0 a 10) i escrigui «apte» si la nota és 5 o més gran, i «no apte» en cas contrari. Utilitza una variable, una lectura de dada i una estructura condicional.

Resoldre
Practica★★☆
El diagrama de flux de la figura representa un programa amb un bucle: llegeix un nombre n i, mentre n sigui més gran que 0, escriu el seu valor i li resta 1, com es…

El diagrama de flux de la figura representa un programa amb un bucle: llegeix un nombre n i, mentre n sigui més gran que 0, escriu el seu valor i li resta 1, com es mostra a la figura.

inici llegir n n > 0 ? sí escriure n n ← n − 1 no fi

Si l'usuari introdueix n = 3: (a) fes la traça indicant quins valors pren n i què s'escriu a cada volta; (b) indica quantes vegades s'executa el cos del bucle; (c) explica què passaria si l'usuari introduís n = 0.

Resoldre
Practica★★☆
Aquest programa classifica una persona segons la seva edat: Fes la traça per a una entrada de 17 i per a una de 21, indicant en cada cas quina condició s'avalua i què…

Aquest programa classifica una persona segons la seva edat:

inici

    llegir edat

    si edat ≥ 18 llavors

        escriure "major d'edat"

    si no

        escriure "menor d'edat"

    fi si

fi

Fes la traça per a una entrada de 17 i per a una de 21, indicant en cada cas quina condició s'avalua i què s'escriu per pantalla.

Resoldre
Practica★★☆
Escriu en pseudocodi un programa que escrigui el compte enrere del 10 a l'1 i, en acabar el bucle, escrigui «enlairament!». Utilitza una variable i un bucle mentre.

Escriu en pseudocodi un programa que escrigui el compte enrere del 10 a l'1 i, en acabar el bucle, escrigui «enlairament!». Utilitza una variable i un bucle mentre.

Resoldre
Practica★★☆
Aquest programa suma els nombres que introdueix l'usuari fins que escriu un zero: Fes la traça per a la seqüència d'entrades 4, 3, 0: indica el valor de n i de suma…

Aquest programa suma els nombres que introdueix l'usuari fins que escriu un zero:

inici

    suma ← 0

    llegir n

    mentre n ≠ 0 fer

        suma ← suma + n

        llegir n

    fi mentre

    escriure suma

fi

Fes la traça per a la seqüència d'entrades 4, 3, 0: indica el valor de n i de suma després de cada lectura i què s'escriu al final. Explica a més per què el primer llegir n està fora del bucle.

Resoldre
Practica★★☆
El diagrama de flux de la figura representa el control d'accés d'un dispositiu: hi ha un màxim de tres intents per introduir la clau correcta, com es mostra a la figura.…

El diagrama de flux de la figura representa el control d'accés d'un dispositiu: hi ha un màxim de tres intents per introduir la clau correcta, com es mostra a la figura.

inici intents ← 0 queden intents? no Accés bloquejat sí llegir clau clau correcta? sí Accés permès no intents ← intents + 1

(a) Explica el recorregut complet del programa quan l'usuari falla la clau dues vegades i l'encerta a la tercera. (b) Indica el nombre màxim de vegades que el programa demana la clau. (c) Raona per què la variable intents s'incrementa només en una de les branques del segon rombe.

Resoldre
Practica★★☆
Aquest programa hauria d'escriure els nombres de l'1 al 5, però té un error: a) Identifica l'error: què li falta al cos del bucle? b) Explica què passa en executar el…

Aquest programa hauria d'escriure els nombres de l'1 al 5, però té un error:

inicio

    n ← 1

    mientras n ≤ 5 hacer

        escribir n

    fin mientras

fin
  1. a) Identifica l'error: què li falta al cos del bucle?
  1. b) Explica què passa en executar el programa tal com està escrit.
  1. c) Escriu el pseudocodi corregit.
Resoldre
Practica★★★
Un company afirma que per comptar quants nombres entre dos valors enters positius qualssevol $A$ i $B$ ($A \le B$) són divisibles simultàniament per $3$ i per $5$, el…

Un company afirma que per comptar quants nombres entre dos valors enters positius qualssevol $A$ i $B$ ($A \le B$) són divisibles simultàniament per $3$ i per $5$, el següent pseudocodi sempre funciona i és el més eficient:

inici

    llegir A, B

    total ← 0

    mentre A ≤ B fer

        si (A mod 3 = 0) o (A mod 5 = 0) llavors

            total ← total + 1

        fi si

        A ← A + 1

    fi mentre

    escriure total

fi

(a) Refuta dues deficiències de la seva proposta: un error de lògica condicional segons l'especificació demanada i una ineficiència algorísmica (analitza quantes iteracions i avaluacions de condicions realitza si $B - A = 1\,000\,000$).

(b) Si obligatòriament s'ha d'emprar un bucle mentre, reescriu l'algorisme optimitzant el valor inicial i el pas d'increment per realitzar el menor nombre possible d'iteracions sense avaluar cap condicional dins del bucle.

(c) Dissenya una solució matemàtica en temps constant $O(1)$ sense bucles en pseudocodi i justifica formalment la fórmula emprada.

Resoldre
Practica★★★
Dissenya en pseudocodi un algorisme per al joc d'«endevina el nombre» on els rols s'inverteixin: l'usuari pensa un nombre secret enter entre $1$ i $100$ i l'ordinador…

Dissenya en pseudocodi un algorisme per al joc d'«endevina el nombre» on els rols s'inverteixin: l'usuari pensa un nombre secret enter entre $1$ i $100$ i l'ordinador l'ha d'endevinar emprant l'estratègia òptima de cerca binària.

(a) Escriu el pseudocodi de l'algorisme. A cada iteració, l'ordinador proposarà el punt mitjà de l'interval actual i l'usuari respondrà si el nombre secret és «més gran», «més petit» o si la màquina ha «encertat».

(b) Incorpora un mecanisme de validació que detecti si l'usuari comet una contradicció o fa trampes (per exemple, si els límits de l'interval de cerca es creuen perquè el límit inferior supera el superior), aturant el programa amb un missatge d'alerta justificatiu.

(c) Justifica formalment quin és el nombre màxim d'intents que necessitarà l'ordinador per endevinar qualsevol nombre en el rang $[1, 100]$ i prediu quants intents màxims es requeririen si el rang s'ampliés a $[1, 1\,000]$.

Resoldre
Practica★★★
Dissenya en pseudocodi l'algorisme de control per a un semàfor de pas de vianants regulat per polsador que gestioni de manera segura el trànsit d'una avinguda amb els…

Dissenya en pseudocodi l'algorisme de control per a un semàfor de pas de vianants regulat per polsador que gestioni de manera segura el trànsit d'una avinguda amb els següents requisits:

  1. En repòs, el semàfor de vehicles roman en verd.

  2. Per evitar retencions provocades per crides contínues, s'ha de garantir un temps mínim de verd de vehicles de $30$ segons entre dues fases de vianants consecutives.

  3. Un cop transcorregut aquest temps mínim i detectada la pulsació d'un vianant, la seqüència obligatòria és: ambre de vehicles durant $3$ segons, vermell de vehicles i verd de vianants durant $15$ segons, i finalment verd de vianants parpellejant durant $4$ segons abans de restablir el verd de vehicles.

(a) Escriu el pseudocodi del sistema estructurat dins d'un bucle continu de supervisió.

(b) Analitza quina fallada de bloqueig patiria la cruïlla si el sensor s'avariés en estat actiu continu (polsador encallat) i justifica com el teu disseny prevé que l'avinguda quedi col·lapsada indefinidament.

(c) Justifica tècnicament per què en sistemes de control concurrents en temps real és preferible consultar una marca temporal de rellotge (temps_actual()) en comptes de suspendre la CPU mitjançant esperes bloquejants passives (esperar()).

Resoldre
Practica★★★
Analitza el següent algorisme que processa parells d'índexs $(i, j)$: (a) Dedueix i justifica algebraicament una fórmula que expressi quantes vegades en total s'avalua…

Analitza el següent algorisme que processa parells d'índexs $(i, j)$:

inici

    llegir N

    comptador ← 0

    per a i des de 1 fins a N fer

        per a j des de i fins a N fer

            si (i + j) mod 2 = 0 llavors

                comptador ← comptador + 1

            fi si

        fi per a

    fi per a

    escriure comptador

fi

(a) Dedueix i justifica algebraicament una fórmula que expressi quantes vegades en total s'avalua la condició si en funció de $N$ (calculant la suma d'iteracions del bucle intern respecte a l'extern).

(b) Prediu el valor final exacte de comptador si l'entrada és $N = 5$, elaborant una taula de traça que mostri els valors de $i$, $j$, el resultat de la condició i les actualitzacions de comptador.

(c) Un alumne afirma: «Com que el bucle niat recorre parelles de nombres, canviar per a j des de i fins a N per per a j des de 1 fins a N i dividir el resultat final entre $2$ produiria exactament el mateix resultat per a qualsevol $N$». Demostra mitjançant un raonament formal o un contraexemple si aquesta afirmació és vertadera o falsa.

Resoldre
Practica★★★
Un analista de ciberseguretat revisa el següent pseudocodi dissenyat per controlar l'accés amb targeta i PIN en un terminal bancari: (a) Identifica i justifica una…

Un analista de ciberseguretat revisa el següent pseudocodi dissenyat per controlar l'accés amb targeta i PIN en un terminal bancari:

inici

    pin_secret ← 3852

    intents ← 0

    bloquejada ← fals

    mentre intents < 3 i no bloquejada fer

        llegir pin_ingressat

        si pin_ingressat = pin_secret llavors

            escriure "Benvingut al sistema"

        si no

            intents ← intents + 1

            escriure "PIN incorrecte"

        fi si

    fi mentre

    si intents = 3 llavors

        bloquejada ← cert

        escriure "Targeta bloquejada per seguretat"

    fi si

fi

(a) Identifica i justifica una fallada greu de control de flux que ocorre quan l'usuari introdueix el PIN correcte en el primer intent.

(b) Prediu el comportament del programa i el valor final de les variables intents i bloquejada si l'usuari introdueix la seqüència d'entrades: 1111, 3852, 9999.

(c) Reescriu l'algorisme en pseudocodi corregint el flux d'execució per garantir sortida neta immediata després de l'encert i bloqueig estricte després de tres fallades consecutives, assegurant que sota cap circumstància es mostri el missatge de benvinguda si la targeta queda bloquejada.

Resoldre
Practica★★★
En el disseny d'una instal·lació hidràulica s'utilitzen casquets cilíndrics de fosa nodular de secció anul·lar (corona circular) amb una densitat…

En el disseny d'una instal·lació hidràulica s'utilitzen casquets cilíndrics de fosa nodular de secció anul·lar (corona circular) amb una densitat $\rho = 7{,}2\text{ g/cm}^3$.

(a) Dissenya en pseudocodi una funció area_anell(radi_int, radi_ext) que calculi i retorni l'àrea de la corona circular ($\pi \cdot (r_{ext}^2 - r_{int}^2)$). La funció ha de validar que $radi\_ext > radi\_int > 0$; si els paràmetres incompleixen aquesta condició física, ha de retornar $-1{,}0$ com a codi d'error. Considera $\pi \approx 3{,}1416$.

(b) Dissenya una segona funció massa_tub(radi_int, radi_ext, longitud, densitat) que invoqui area_anell per calcular el volum i la massa total del tram en quilograms (considerant que les dimensions s'introdueixen en centímetres i la densitat en $\text{g/cm}^3$). Si area_anell retorna error o la longitud és menor o igual a zero, la funció ha de propagar el valor $-1{,}0$.

(c) Realitza la traça completa de l'execució de massa_tub(4{,}0, 5{,}0, 100{,}0, 7{,}2), indicant els valors que entren i surten de cada funció i justificant el resultat numèric obtingut.

Resoldre
Practica★★★
La comissió de garantia de qualitat d'un centre avalua el següent algorisme, destinat a determinar la qualificació final d'un mòdul tècnic a partir de tres notes…

La comissió de garantia de qualitat d'un centre avalua el següent algorisme, destinat a determinar la qualificació final d'un mòdul tècnic a partir de tres notes parcials ($N_1, N_2, N_3 \in [0{,}0; 10{,}0]$). La normativa oficial estableix: «L'alumne resulta 'Apte' si la mitjana ponderada ($30\,\%$ per a $N_1$, $30\,\%$ per a $N_2$ i $40\,\%$ per a $N_3$) és igual o superior a $5{,}0$, sempre que cap de les notes individuals sigui inferior a $4{,}0$; en cas contrari, resultarà 'No apte'».

inici

    llegir N1, N2, N3

    mitjana ← N1 · 0,3 + N2 · 0,3 + N3 · 0,4

    si mitjana ≥ 5,0 o (N1 ≥ 4,0 i N2 ≥ 4,0 i N3 ≥ 4,0) llavors

        escriure "Apte"

    si no

        escriure "No apte"

    fi si

fi

(a) Explica detalladament per què el programa no genera cap error de sintaxi i s'executa amb normalitat tot i contenir un error lògic crític en l'estructura condicional.

(b) Dissenya dues ternes de notes de prova $(N_1, N_2, N_3)$ que posin en evidència la fallada de l'algorisme: una que causi un fals positiu (el programa declari 'Apte' havent de ser 'No apte') i una altra que causi un fals negatiu (o justifica si aquest últim és possible amb l'expressió actual).

(c) Reescriu l'algorisme en pseudocodi corregint la condició lògica i afegint una comprovació prèvia que verifiqui que les tres notes introduïdes es trobin dins del rang vàlid $[0{,}0; 10{,}0]$.

Resoldre
Practica★★★
Un programador novell ha implementat el joc d'«endevina el nombre» utilitzant una única funció que accedeix directament a variables globals: (a) Justifica tres…

Un programador novell ha implementat el joc d'«endevina el nombre» utilitzant una única funció que accedeix directament a variables globals:

variables globals: secret, intents

funcio jugar_ronda()

    escriure "Introdueix un nombre (1-100): "

    llegir intent

    intents ← intents + 1

    si intent = secret llavors

        escriure "Has encertat en ", intents, " intents!"

    si no

        si intent < secret llavors

            escriure "El nombre secret és més gran"

        si no

            escriure "El nombre secret és més petit"

        fi si

    fi si

fi funcio

(a) Justifica tres desavantatges d'aquest disseny basant-te en els conceptes d'acoblament, efectes secundaris i falta de cohesió. Per què barrejar l'entrada/sortida de la consola amb la lògica de comparació impedeix reutilitzar aquesta funció en una interfície gràfica o en una aplicació web?

(b) Redefineix l'arquitectura modular creant tres funcions amb baix acoblament: una funció pura de comparació (que rebi l'intent i el secret i retorni un indicador de resultat), una funció de validació d'entrada (que verifiqui el rang $[1, 100]$) i una funció d'actualització d'estat. Especifica per a cadascuna la seva signatura exacta (nom, paràmetres amb tipus i tipus de retorn) i les seves responsabilitats.

(c) Escriu en pseudocodi el programa principal que coordini aquestes funcions mitjançant pas de paràmetres i retorns, sense utilitzar cap variable global.

Resoldre