Tornar a la portadaTecnologia i Digitalització · 3r ESO · Canviar d'assignatura
Començar gratis
ESO 3r · Tecnologia i Digitalització
Programació i robòtica · Programació textual

Programació textual

Fins ara arrossegaves blocs de colors. Ara escrius les mateixes idees amb text: cada línia és una ordre exacta i l'ordinador l'executa tal qual, sense endevinar el que volies dir.

Et convé dominar: Programació per blocs (2n d'ESO)
Et convé dominar: Algorismes i pensament computacional (2n d'ESO)

Variables, tipus de dada i E/S

Variable com a caixa amb etiqueta: tres línies de codi creen la caixa puntos amb un 0, hi sumen 1 i en mostren el valor per pantalla. Codi 1 puntos = 0 2 puntos = puntos + 1 3 print(puntos) Variable (caixa) puntos 0 → 1 guarda 0 llegeix, suma 1, guarda puntos: 1 Pantalla
Practica★☆☆Sense començar
Explica què és una variable amb el símil d'una caixa amb etiqueta i descriu què fa cada línia: puntos = 0, puntos = puntos + 1, print(puntos). Quin valor apareix a la…

Explica què és una variable amb el símil d'una caixa amb etiqueta i descriu què fa cada línia: puntos = 0, puntos = puntos + 1, print(puntos). Quin valor apareix a la pantalla i per què no és un error sumar-li alguna cosa a una variable que «ja tenia» un valor?

Resoldre
Practica★☆☆Sense començar
Classifica aquests valors segons el seu tipus de dada (enter, decimal, text o booleà) i posa un exemple d'ús per a cada tipus en un programa d'una botiga: 13, 3,75,…

Classifica aquests valors segons el seu tipus de dada (enter, decimal, text o booleà) i posa un exemple d'ús per a cada tipus en un programa d'una botiga: 13, 3,75, "Ana", True.

Resoldre
Practica★☆☆Sense començar
Explica què fan les ordres input() i print() en Python, quina diferència hi ha entre elles i escriu un programa de dues línies que et demani el nom i et saludi fent-lo…

Explica què fan les ordres input() i print() en Python, quina diferència hi ha entre elles i escriu un programa de dues línies que et demani el nom i et saludi fent-lo servir.

Resoldre
Practica★★☆Sense començar
Prediu la sortida d'aquest programa sense executar-lo, seguint el valor de les variables línia a línia: a = 4, b = 3, a = a + b, b = a - b, print(a), print(b). Escriu la…

Prediu la sortida d'aquest programa sense executar-lo, seguint el valor de les variables línia a línia: a = 4, b = 3, a = a + b, b = a - b, print(a), print(b). Escriu la traça completa (què val cada variable després de cada línia) i no només el resultat.

Resoldre
Practica★★☆Sense començar
Escriu un programa de tres línies que demani el nom i l'edat d'una persona i escrigui una frase completa usant-los (per exemple, «La Mei té 14 anys»). Explica quin tipus…

Escriu un programa de tres línies que demani el nom i l'edat d'una persona i escrigui una frase completa usant-los (per exemple, «La Mei té 14 anys»). Explica quin tipus de dada retorna sempre input() i per a què serveix int() en demanar l'edat.

Resoldre

Condicionals: `if`, `elif`, `else`

Codi en Python amb un condicional if/else: si edad és major o igual que 12 es mostra "Puedes", i si no, "Aún no". Les línies de cada bloc van amb sagnat. edad = int(input("Edad: ")) if edad >= 12: print("Puedes") else: print("Aún no") ← condició si és certa ← si no si és falsa sense sagnat entrada
Practica★☆☆Sense començar
La figura mostra un diagrama de flux i, al seu costat, el programa que fa el mateix, però amb la condició tapada. Escriu la condició que falta a la línia de l'if (ha de…

La figura mostra un diagrama de flux i, al seu costat, el programa que fa el mateix, però amb la condició tapada.

inici demanar l'edat edat ≥ 12? sí pots participar no et falta poc edad = int(input("Edad: ")) if ?: print("Puedes") else: print("Aún no")

Escriu la condició que falta a la línia de l'if (ha de comparar la variable edad amb $12$), explica què fa int(input("Edad: ")) i per què les línies dins de l'if i de l'else van sagnades cap a la dreta.

Resoldre
Practica★☆☆Sense començar
Explica què és un condicional amb un exemple de la teva vida diària (si plou agafo el parigua; si no, les ulleres de sol) i escriu-lo en tres línies de pseudocodi:…

Explica què és un condicional amb un exemple de la teva vida diària (si plou agafo el parigua; si no, les ulleres de sol) i escriu-lo en tres línies de pseudocodi: condició, què passa si es compleix i què passa si no.

Resoldre
Practica★☆☆Sense començar
Aquest programa té tres errors típics: nombre = input("Tu nombre: ), if nombre = "Fátima", print("Hola"). Troba cada error (unes cometes sense tancar, un = que hauria de…

Aquest programa té tres errors típics: nombre = input("Tu nombre: ), if nombre = "Fátima", print("Hola"). Troba cada error (unes cometes sense tancar, un = que hauria de ser == i explica la diferència), reescriu el programa corregit i digues quin missatge d'error donaria l'ordinador en cada cas.

Resoldre
Practica★★☆Sense començar
Escriu un programa que demani un nombre i digui si és positiu, negatiu o zero. Indica quina estructura utilitzes (un condicional amb dues branques o tres), quines…

Escriu un programa que demani un nombre i digui si és positiu, negatiu o zero. Indica quina estructura utilitzes (un condicional amb dues branques o tres), quines comparacions fas i prova-ho mentalment amb els valors $7$, $-3$ i $0$.

Resoldre
Practica★★☆Sense començar
Un programa converteix la nota numèrica en qualificació: menys de $5$ és «suspens», de $5$ a $6{,}9$ és «aprovat» i de $7$ en endavant és «notable». Escriu-lo amb if,…

Un programa converteix la nota numèrica en qualificació: menys de $5$ és «suspens», de $5$ a $6{,}9$ és «aprovat» i de $7$ en endavant és «notable». Escriu-lo amb if, elif i else, explica per què l'ordre de les condicions importa i què passaria si la primera condició fos nota > 5.

Resoldre

Bucles: `for` i `while`

Animació que compara un bucle for i un bucle while: un cursor recorre les línies de cada codi. Al for, cada volta afegeix una marca i una barra d'alçada proporcional a 3·i, d'i = 0 a 9. Al while, el cursor recorre la condició, el print i la resta; una barra s'encongeix de n = 5 a 0 i apareix un punt per cada valor mostrat, fins que la condició deixa de complir-se. for: vegades fixes for i in range(10): print(3 * i) 10 voltes, 10 línies per pantalla while: fins que... n = 5 while n > 0: print(n) n = n - 1
Practica★☆☆Sense començar
Explica la diferència entre un bucle for (repetir un nombre conegut de vegades) i un bucle while (repetir mentre es compleixi una condició), i posa un exemple quotidià…

Explica la diferència entre un bucle for (repetir un nombre conegut de vegades) i un bucle while (repetir mentre es compleixi una condició), i posa un exemple quotidià de cadascun: fer deu voltes al pati enfront de continuar remant fins a arribar a la riba.

Resoldre
Practica★★☆Sense començar
Escriu un bucle for que mostri la taula de multiplicar del $3$ (de l'$3 \cdot 1$ al $3 \cdot 10$), indica quantes vegades es repeteix el cos del bucle i explica què…

Escriu un bucle for que mostri la taula de multiplicar del $3$ (de l'$3 \cdot 1$ al $3 \cdot 10$), indica quantes vegades es repeteix el cos del bucle i explica què canviaries per mostrar la taula del $7$ sense reescriure tot el programa.

Resoldre
Practica★★☆Sense començar
Llegeix aquest programa i explica què fa: n = 5, while n > 0:, print(n), n = n - 1, i al final print("¡Ya!"). Escriu la sortida completa a la pantalla i raona què…

Llegeix aquest programa i explica què fa: n = 5, while n > 0:, print(n), n = n - 1, i al final print("¡Ya!"). Escriu la sortida completa a la pantalla i raona què passaria si oblidem la línia n = n - 1.

Resoldre
Practica★★☆Sense començar
Un company escriu un programa que demana contrasenyes fins a encertar: clave = "", while clave != "sol":, i a dins només print("incorrecta"). Explica per què el programa…

Un company escriu un programa que demana contrasenyes fins a encertar: clave = "", while clave != "sol":, i a dins només print("incorrecta"). Explica per què el programa no acaba mai, quina línia falta dins del bucle (tornar a demanar la clau) i la regla general sobre els bucles while: alguna cosa ha de poder canviar la condició.

Resoldre
Practica★★★Sense començar
Per seleccionar els classificats d'un torneig de robòtica, es llegeixen cinc puntuacions (del $0$ al $10$). Un company ha proposat aquest codi per comptar quantes són…

Per seleccionar els classificats d'un torneig de robòtica, es llegeixen cinc puntuacions (del $0$ al $10$). Un company ha proposat aquest codi per comptar quantes són iguals o superiors a $5{,}0$:

aprobados = 0

for i in range(5):

    nota = float(input("Introduce nota: "))

    if nota >= 5:

        aprobados = aprobados + 1

    else:

        aprobados = 0

print("Total de aprobados:", aprobados)
  1. a) Prediu què mostrarà per pantalla si l'usuari introdueix successivament les notes: $6{,}0$, $8{,}0$, $4{,}0$, $9{,}0$ i $7{,}0$. Justifica per què el resultat final no és l'esperat localitzant l'error de lògica en l'estructura condicional.
  2. b) Corregeix el codi i modifica'l perquè descarti del recompte les notes errònies (menors que $0$ o majors que $10$), mostrant un missatge d'advertència específic sense sumar ni reiniciar el comptador.
Resoldre

Funcions

Una funció com a màquina: la mateixa funció area_cuadrado rep el valor 5 i retorna 25, i rep 2.5 i retorna 6.25; es dibuixen els quadrats de costat 5 i de costat 2.5 sobre una quadrícula d'unitats per mostrar-ne les àrees. crida resultat def area_cuadrado(lado): return lado * lado area_cuadrado(5) area_cuadrado(2.5) 25 5 × 5 6.25 2.5 × 2.5
Practica★☆☆Sense començar
Explica què és una funció en un programa i quin avantatge té escriure una vegada def saludar(): i poder cridar-la moltes vegades, en lloc de copiar les mateixes línies…

Explica què és una funció en un programa i quin avantatge té escriure una vegada def saludar(): i poder cridar-la moltes vegades, en lloc de copiar les mateixes línies una vegada i una altra.

Resoldre
Practica★★☆Sense començar
Analitza aquesta funció: def area_cuadrado(lado): i a dins return lado * lado. Explica què és el paràmetre, què és el valor que retorna i què escriuria a la pantalla…

Analitza aquesta funció: def area_cuadrado(lado): i a dins return lado * lado. Explica què és el paràmetre, què és el valor que retorna i què escriuria a la pantalla cada crida: print(area_cuadrado(5)), print(area_cuadrado(2{,}5)).

Resoldre
Practica★★★Sense començar
Un equip desenvolupa el programari d'una caixa enregistradora utilitzant funcions: a) En executar aquest codi, Python produeix l'error: TypeError: unsupported operand…

Un equip desenvolupa el programari d'una caixa enregistradora utilitzant funcions:

def calcular_iva(precio):

    total = precio * 1.21

    pass  # El programador va oblidar afegir l'última línia d'aquesta funció

def aplicar_descuento(total, rebaja):

    resultado = total - rebaja

    return resultado

precio_base = 100.0

precio_con_iva = calcular_iva(precio_base)

precio_final = aplicar_descuento(precio_con_iva, 10.0)

print("Precio final:", precio_final)
  1. a) En executar aquest codi, Python produeix l'error: TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'. Interpreta el missatge i explica exactament com viatja el valor None per les variables del programa.
  2. b) Un company sosté: «Per arreglar-ho n'hi ha prou amb canviar la línia de la primera funció per print(precio * 1.21)». Rebat la seva afirmació explicant la diferència funcional entre mostrar un valor per pantalla i retornar un valor a la crida principal.
  3. c) Corregeix el codi i afegeix una funció es_valido(precio) que retorni un valor booleà (True o False) per verificar que l'import base no sigui negatiu abans de processar-lo.
Resoldre

Errors de sintaxi i errors de lògica

Dues finestres de codi: amb un error de sintaxi (cometes sense tancar) el programa no arrenca; amb un error de lògica (nota1 + nota2 / 2) arrenca però dona 7 en comptes de 5. Error de sintaxi input("Tu nombre: ) no arrenca Error de lògica media = nota1 + nota2 / 2 nota1 = 4 nota2 = 6 resultat: 7 esperat: 5 arrenca, resultat erroni
Practica★★★Sense començar
En el joc «d'endevinar un número secret de l'$1$ al $100$», el teu company afirma: «Amb un bucle d'intents fixos és impossible garantir que l'usuari encerti; sempre…

En el joc «d'endevinar un número secret de l'$1$ al $100$», el teu company afirma: «Amb un bucle d'intents fixos és impossible garantir que l'usuari encerti; sempre estem obligats a utilitzar un while infinit fins que encerti».

  1. a) Rebat la seva afirmació: justifica matemàticament per què $7$ intents són suficients per endevinar amb total seguretat qualsevol número entre $1$ i $100$ si s'utilitza una estratègia de cerca binària (preguntar sempre pel punt mitjà).
  2. b) Dissenya en Python o pseudocodi el joc amb un límit de $7$ vides. El programa s'ha d'aturar tant si l'usuari encerta abans d'esgotar els intents com si es queda sense vides, mostrant missatges finals diferents. Justifica la condició lògica d'aturada que has triat.
Resoldre
Practica★★★Sense començar
Una botiga aplica la política següent: compres menors de $30\ \text{€}$ paguen $4{,}50\ \text{€}$ d'enviament; compres entre $30\ \text{€}$ i $50\ \text{€}$ tenen…

Una botiga aplica la política següent: compres menors de $30\ \text{€}$ paguen $4{,}50\ \text{€}$ d'enviament; compres entre $30\ \text{€}$ i $50\ \text{€}$ tenen enviament de franc; compres superiors a $50\ \text{€}$ tenen enviament de franc i un $10\ \%$ de descompte sobre el preu de la compra.

Un alumne va programar aquest codi:

precio = float(input("Total compra: "))

if precio > 50:

    total = precio * 0.90

if precio >= 30:

    total = precio

else:

    total = precio + 4.50

print("Total a pagar:", total)
  1. a) Realitza la traça amb una compra de $60{,}00\ \text{€}$. Quin preu final imprimeix el programa? Justifica per què es produeix aquesta fallada de lògica en encadenar els condicionals.
  2. b) Reescriu el programa de manera correcta utilitzant una estructura condicional niada o amb elif, i inclou una validació que avisi si s'introdueix un preu negatiu o zero.
Resoldre
Practica★★★Sense començar
Observa el programa següent, l'objectiu del qual és demanar l'edat a l'usuari i determinar si té edat legal per votar (a partir de $18$ anys complerts): a) Si intentes…

Observa el programa següent, l'objectiu del qual és demanar l'edat a l'usuari i determinar si té edat legal per votar (a partir de $18$ anys complerts):

if edad >= "18":

print("Puedes votar")

edad = input("Dime tu edad: ")

else:

    print("No puedes votar")
  1. a) Si intentes executar el programa tal com està, en quina línia s'aturarà l'intèrpret de Python i per què no arribarà a executar la línia de l'input?
  2. b) Identifica i classifica tots els errors presents distingint entre errors de sintaxi (que impedeixen compilar/interpretar) i errors de tipus o lògica durant l'execució.
  3. c) Reescriu el codi corregit i introdueix una comprovació per evitar que el programa es pengi si l'usuari introdueix la seva edat amb text (per exemple, escrivint «divuit»).
Resoldre
Practica★★★Sense començar
Per regular una cruïlla escolar es proposa aquest algorisme en pseudocodi per a un semàfor amb polsador per a vianants: a) Detecta una greu fallada de seguretat viària…

Per regular una cruïlla escolar es proposa aquest algorisme en pseudocodi per a un semàfor amb polsador per a vianants:

mentre vertader:

    verd_cotxes = ON, vermell_vianants = ON

    si polsador_activat == 1:

        esperar(5)

        verd_cotxes = OFF, ambre_cotxes = ON

        esperar(3)

        ambre_cotxes = OFF, vermell_cotxes = ON

        vermell_vianants = OFF, verd_vianants = ON

        esperar(10)

        verd_vianants = OFF, vermell_vianants = ON
  1. a) Detecta una greu fallada de seguretat viària en la transició de tornada: quan s'apaga el verd de vianants, què passa immediatament amb el trànsit rodat en la següent iteració del bucle?
  2. b) Dissenya una millora de l'algorisme (en pseudocodi o text estructurat) que solucioni aquesta fallada i que a més impedeixi el col·lapse del trànsit: si els vianants premen repetidament el botó, el semàfor ha de garantir sempre un mínim de $20$ segons ininterromputs en verd per als cotxes entre cicle i cicle.
Resoldre
Practica★★★Sense començar
Dissenya l'algorisme per a un terminal de recàrrega i cobrament del menjador escolar complint els requisits tècnics següents: La targeta parteix d'un saldo inicial de…

Dissenya l'algorisme per a un terminal de recàrrega i cobrament del menjador escolar complint els requisits tècnics següents:

  • La targeta parteix d'un saldo inicial de $20{,}00\ \text{€}$ i cada menú costa $4{,}50\ \text{€}$.

  • En un bucle, el programa pregunta quants menús es volen consumir durant el dia.

  • Si el saldo disponible no arriba per pagar la quantitat sol·licitada, l'operació es cancel·la, s'informa de l'import que falta i el saldo no es modifica.

  • Si hi ha saldo suficient, es descompta l'import i es comprova si el saldo restant és inferior a $5{,}00\ \text{€}$, mostrant en aquest cas l'avís «Saldo baix: recarregueu aviat».

  • El programa ha d'acabar automàticament quan el saldo restant sigui menor que el preu d'un menú individual ($4{,}50\ \text{€}$).

  • Justifica quin tipus de bucle has utilitzat i explica com evites que un usuari introdueixi un nombre negatiu de menús per augmentar artificialment el seu saldo.

Resoldre
Practica★★★Sense començar
Un sistema de qualificació calcula la nota final aplicant els pesos següents: Treball de classe ($20\ \%$), Pràctica de taller ($30\ \%$) i Examen teòric ($50\ \%$). El…

Un sistema de qualificació calcula la nota final aplicant els pesos següents: Treball de classe ($20\ \%$), Pràctica de taller ($30\ \%$) i Examen teòric ($50\ \%$). El professor ha programat la fórmula així:

trabajo = float(input("Nota trabajo: "))

taller = float(input("Nota taller: "))

examen = float(input("Nota examen: "))

nota_final = trabajo * 0.20 + taller * 0.30 + examen * 0.50 / 3

if nota_final > 5:

    print("Aprobado")

else:

    print("Suspenso")
  1. a) Prediu el resultat que mostrarà el programa si l'alumne obté un $10{,}0$ en tots tres apartats. Interpreta la prioritat d'operadors per justificar el valor numèric erroni que emmagatzema nota_final.
  2. b) Justifica per què aquest error és de lògica i no de sintaxi, i argumenta per què els errors lògics suposen un risc molt més gran en programes d'enginyeria o control que els de sintaxi.
  3. c) Detecta un segon error lògic en la condició de l'if respecte al criteri legal habitual de qualificació (aprovar amb un $5{,}0$) i escriu la versió definitiva del programa corregit.
Resoldre

Resum

Veure tots els exercicis d'aquest apartat