Diferència entre revisions de la pàgina «ASIX-M3-UF1-A2.1-Solucions Exercicis estructura alternativa»
Línia 1: | Línia 1: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== A2.1 Exercicis estructura alternativa == | == A2.1 Exercicis estructura alternativa == | ||
Línia 171: | Línia 4: | ||
1. Escriure un programa que demani una nota d'una prova i ens digui si ha aprovat (>=5). | 1. Escriure un programa que demani una nota d'una prova i ens digui si ha aprovat (>=5). | ||
− | + | ||
<source lang="python"> | <source lang="python"> | ||
print("Programa per determinar si una prova està aprovada") | print("Programa per determinar si una prova està aprovada") | ||
Línia 189: | Línia 22: | ||
</source> | </source> | ||
− | + | ||
2. Escriure un programa que demani una nota d'una prova i ens digui si ha aprovat o ha suspès. | 2. Escriure un programa que demani una nota d'una prova i ens digui si ha aprovat o ha suspès. | ||
− | + | ||
<source lang="python"> | <source lang="python"> | ||
print("Programa per determinar si una prova està aprovada o suspesa") | print("Programa per determinar si una prova està aprovada o suspesa") | ||
Línia 211: | Línia 44: | ||
print("L'alumne ha suspès!") | print("L'alumne ha suspès!") | ||
</source> | </source> | ||
− | + | ||
3. Escriure un programa que demani dos números i digui si són iguals o diferents. | 3. Escriure un programa que demani dos números i digui si són iguals o diferents. | ||
− | + | ||
<source lang="python"> | <source lang="python"> | ||
print("Programa per deternimar si dos números són iguals o no") | print("Programa per deternimar si dos números són iguals o no") | ||
Línia 230: | Línia 63: | ||
print("Els números són diferents!") | print("Els números són diferents!") | ||
</source> | </source> | ||
− | + | ||
4. Escriure un programa que provi d'endevinar un número secret (poseu el número secret com a constant). | 4. Escriure un programa que provi d'endevinar un número secret (poseu el número secret com a constant). | ||
− | + | ||
<source lang="python"> | <source lang="python"> | ||
print("Programa per endevinar un número secret (0, )") | print("Programa per endevinar un número secret (0, )") | ||
Línia 252: | Línia 85: | ||
print("Ho sento! Torna-ho a intentar...") | print("Ho sento! Torna-ho a intentar...") | ||
</source> | </source> | ||
− | + | ||
'''Exercicis sentencia if''' | '''Exercicis sentencia if''' | ||
Línia 262: | Línia 95: | ||
El programa ha de llegir les hores treballades, el torn i el dia de la setmana i dir quin serà el salari. | El programa ha de llegir les hores treballades, el torn i el dia de la setmana i dir quin serà el salari. | ||
− | + | ||
<source lang="phyton"> | <source lang="phyton"> | ||
print("Programa per calcular el salari d'un dia de treball") | print("Programa per calcular el salari d'un dia de treball") | ||
Línia 295: | Línia 128: | ||
print("El salari és: %d €" %salari); | print("El salari és: %d €" %salari); | ||
</source> | </source> | ||
− | |||
2. Escriviu un programa que simuli una calculadora simple. El programa llegeix dos enters i un caràcter. Si el caràcter és un '+' s’imprimeix la suma, si és un '–' la resta, si és un '*' el producte, si és un '/' la divisió real, si és '//' la divisió entera i si és un '%', el mòdul. | 2. Escriviu un programa que simuli una calculadora simple. El programa llegeix dos enters i un caràcter. Si el caràcter és un '+' s’imprimeix la suma, si és un '–' la resta, si és un '*' el producte, si és un '/' la divisió real, si és '//' la divisió entera i si és un '%', el mòdul. | ||
− | + | ||
<source lang="phyton"> | <source lang="phyton"> | ||
print("Programa calculadora simple") | print("Programa calculadora simple") | ||
Línia 330: | Línia 162: | ||
print("El resultat de l'operació és: %d " %resultat) | print("El resultat de l'operació és: %d " %resultat) | ||
</source> | </source> | ||
− | |||
3. Escriviu un programa que llegeixi del teclat un enter comprès entre 0 i 63 (inclosos) i ens digui el nombre de bits que necessitem per escriure’l en binari. No s’ha de fer servir cap funció calcular-ho, sinó simplement a base de '''if .. elif .. else''', recordant que a cada potència de 2 necessitem un bit més. | 3. Escriviu un programa que llegeixi del teclat un enter comprès entre 0 i 63 (inclosos) i ens digui el nombre de bits que necessitem per escriure’l en binari. No s’ha de fer servir cap funció calcular-ho, sinó simplement a base de '''if .. elif .. else''', recordant que a cada potència de 2 necessitem un bit més. | ||
− | + | ||
<source lang="phyton"> | <source lang="phyton"> | ||
print("Programa bits per representar en binari un número") | print("Programa bits per representar en binari un número") | ||
Línia 366: | Línia 197: | ||
print("Necessitem %d bits " %bits) | print("Necessitem %d bits " %bits) | ||
</source> | </source> | ||
− | |||
4. Volem saber si una persona és major d’edat, per això llegirem la data de naixement(dia_neix, mes_neix i any_neix). | 4. Volem saber si una persona és major d’edat, per això llegirem la data de naixement(dia_neix, mes_neix i any_neix). | ||
Línia 381: | Línia 211: | ||
ANY_ACTUAL = AVUI.year | ANY_ACTUAL = AVUI.year | ||
</source> | </source> | ||
− | + | ||
<source lang="phyton"> | <source lang="phyton"> | ||
from datetime import date | from datetime import date | ||
Línia 415: | Línia 245: | ||
print("Ets menor d'edat!") | print("Ets menor d'edat!") | ||
</source> | </source> | ||
− | + | ||
5. Escriu un programa que llegeixi un número enter positiu i determini si es un número de 1, 2,3 o 4 xifres. | 5. Escriu un programa que llegeixi un número enter positiu i determini si es un número de 1, 2,3 o 4 xifres. | ||
Línia 421: | Línia 251: | ||
Control d'errors: Escriu els missatges pertinents si han introduït un valor fora del rang o si no han introduït un número enter. | Control d'errors: Escriu els missatges pertinents si han introduït un valor fora del rang o si no han introduït un número enter. | ||
− | |||
<source lang="phyton"> | <source lang="phyton"> | ||
print("Programa xifres d'un número") | print("Programa xifres d'un número") | ||
Línia 449: | Línia 278: | ||
print("La entrada és incorrecte: escriu un número enter!") # No és un enter | print("La entrada és incorrecte: escriu un número enter!") # No és un enter | ||
</source> | </source> | ||
− | |||
6. En un casino de jocs es desitja mostrar els missatges respectius per els punts obtinguts en el llançament de tres daus d'un client, d'acord als següents resultats: | 6. En un casino de jocs es desitja mostrar els missatges respectius per els punts obtinguts en el llançament de tres daus d'un client, d'acord als següents resultats: | ||
Línia 466: | Línia 294: | ||
dau = randint(1,6) | dau = randint(1,6) | ||
</source> | </source> | ||
− | + | ||
<source lang="phyton"> | <source lang="phyton"> | ||
from random import randint | from random import randint | ||
Línia 491: | Línia 319: | ||
print("Pèssim") | print("Pèssim") | ||
</source> | </source> | ||
− | + | ||
7. Demaneu tres números enters positius i mostreu-los en ordre descendent. | 7. Demaneu tres números enters positius i mostreu-los en ordre descendent. | ||
Línia 497: | Línia 325: | ||
Control d'errors: Escriu els missatges pertinents si han introduït un valor negatiu, si no han introduït un enter o si han introduït números iguals. | Control d'errors: Escriu els missatges pertinents si han introduït un valor negatiu, si no han introduït un enter o si han introduït números iguals. | ||
− | |||
<source lang="phyton"> | <source lang="phyton"> | ||
print("Ordenació de tres números enters positius") | print("Ordenació de tres números enters positius") | ||
Línia 541: | Línia 368: | ||
print("La entrada és incorrecte: escriu només números enters positius!") # No són números enters | print("La entrada és incorrecte: escriu només números enters positius!") # No són números enters | ||
</source> | </source> | ||
− | + | ||
8. Tres persones les edats de les quals s’han de llegir per teclat, van a un parc d’atraccions. El cost de l’entrada normal és de 20€. Però tenen els següents descomptes: | 8. Tres persones les edats de les quals s’han de llegir per teclat, van a un parc d’atraccions. El cost de l’entrada normal és de 20€. Però tenen els següents descomptes: | ||
Línia 553: | Línia 380: | ||
Quan costaran les tres entrades? | Quan costaran les tres entrades? | ||
− | |||
<source lang="phyton"> | <source lang="phyton"> | ||
print("Import entrades parc d'atraccions") | print("Import entrades parc d'atraccions") | ||
Línia 614: | Línia 440: | ||
print("El cost de les entrades es de %d €" %total) | print("El cost de les entrades es de %d €" %total) | ||
</source> | </source> | ||
− | + | ||
== A2.2 Exercicis avaluar expressions lògiques == | == A2.2 Exercicis avaluar expressions lògiques == |
Revisió del 17:45, 2 nov 2022
Contingut
- 1 A2.1 Exercicis estructura alternativa
- 2 A2.2 Exercicis avaluar expressions lògiques
- 3 A2.3 Exercicis trobar expressions lògiques
- 4 A2.4 Exercicis estructura iterativa
- 5 A2.5 Exercicis estructura iterativa: recorregut
- 6 A2.6 Exercicis estructura iterativa: cerca
- 7 A4.1 Exercicis Cadenes
- 8 A4.2 Exercicis Llistes
- 9 A4.3 Exercicis Diccionaris
- 10 A4.4 Exercicis Tuples
- 11 A4.5 Exercicis Tipus definits per l'usuari (clases)
A2.1 Exercicis estructura alternativa
Exercicis preliminars
1. Escriure un programa que demani una nota d'una prova i ens digui si ha aprovat (>=5).
print("Programa per determinar si una prova està aprovada")
# Constant nota aprovat
NOTA_APROVAT = 5.0
# Entrada nota prova
nota = float(input("Introdueix la nota de la prova: "))
# Determinar si la prova està aprovada
if (nota >= NOTA_APROVAT):
print("L'alumne ha aprovat!")
2. Escriure un programa que demani una nota d'una prova i ens digui si ha aprovat o ha suspès.
print("Programa per determinar si una prova està aprovada o suspesa")
# Constant nota aprovat
NOTA_APROVAT = 5.0
# Entrada nota prova
nota = float(input("Introdueix la nota de la prova: "))
# Determinar si la prova està aprovada
if (nota >= NOTA_APROVAT):
print("L'alumne ha aprovat!")
else:
print("L'alumne ha suspès!")
3. Escriure un programa que demani dos números i digui si són iguals o diferents.
print("Programa per deternimar si dos números són iguals o no")
# Entrada de números
numero_1 = float(input("Introdueix un número: "))
numero_2 = float(input("Introdueix un altre número: "))
# Determinar si dos números són iguals o no
if (numero_1 == numero_2):
print("Els números són iguals!")
else:
print("Els números són diferents!")
4. Escriure un programa que provi d'endevinar un número secret (poseu el número secret com a constant).
print("Programa per endevinar un número secret (0, )")
# Constant número secret
NUM_SECRET = 9
# Entrada del número
numero = int(input("Endivina el número secret: "))
# Determinar encert del número secret
if (numero == NUM_SECRET):
print("Enhorabona!")
else:
print("Ho sento! Torna-ho a intentar...")
Exercicis sentencia if
1. Els treballadors d’una fàbrica treballen en dos torns: diürn i nocturn. Es vol calcular el salari d’un dia d’acord amb els següents punts:
- a. La tarifa de les hores diürnes és de 4€
- b. La tarifa de les hores nocturnes és de 6€
- c. En cas de ser diumenge, la tarifa s’incrementa en 2€ el torn diari i en 3€ el torn nocturn.
El programa ha de llegir les hores treballades, el torn i el dia de la setmana i dir quin serà el salari.
print("Programa per calcular el salari d'un dia de treball")
# Constants tarifes
DIA = 4
DIAFESTIU = 6
NIT = 6
NITFESTIU = 9
# Entrada hores, torn i dies
hores = int(input("Introdueix el nombre d'hores treballades: "))
torn = input("Introdueix el torn (diari ->d/nocturn->n): ")
dia = input("Introdueix el dia (diumenge->d/feiner->f): ")
# Determinar salari
if dia == 'f':
if torn == 'd':
salari = hores * DIA
else:
salari = hores * NIT
elif torn == 'd':
salari = hores * DIAFESTIU
else:
salari = hores * NITFESTIU
# Resultat: salari del dia
print("El salari és: %d €" %salari);
2. Escriviu un programa que simuli una calculadora simple. El programa llegeix dos enters i un caràcter. Si el caràcter és un '+' s’imprimeix la suma, si és un '–' la resta, si és un '*' el producte, si és un '/' la divisió real, si és '//' la divisió entera i si és un '%', el mòdul.
print("Programa calculadora simple")
# Entrada números i operació
num1 = int(input("Introdueix un valor enter: "))
num2 = int(input("Introdueix un altre valor enter: "))
operacio = input("Introdueix l'operació ('+' , '-' , '*' , '/' , '//' , '%': ")
# Operació
if operacio == '+':
resultat = num1 + num2
elif operacio == '-':
resultat = num1 - num2
elif operacio == '*':
resultat = num1 * num2
elif operacio == '/':
resultat = num1 / num2
elif operacio == '//':
resultat = num1 // num2
else:
resultat = num1 % num2
# Resultat de l'operació
if isinstance(resultat,float):
print("El resultat de l'operació és: %3.2f " %resultat)
else:
print("El resultat de l'operació és: %d " %resultat)
3. Escriviu un programa que llegeixi del teclat un enter comprès entre 0 i 63 (inclosos) i ens digui el nombre de bits que necessitem per escriure’l en binari. No s’ha de fer servir cap funció calcular-ho, sinó simplement a base de if .. elif .. else, recordant que a cada potència de 2 necessitem un bit més.
print("Programa bits per representar en binari un número")
# Entrada número
valor = int(input("Introdueix un valor enter: "))
# Validació del número entrat
if valor < 0 or valor > 63:
print("El número ha d'estar comprès en el rang [0:63]")
else:
# Obtenció del nombre de bits
if (valor < 2):
bits = 1
elif (valor < 4):
bits = 2
elif (valor < 8):
bits = 3
elif (valor < 16):
bits = 4
elif (valor < 32):
bits = 5
else:
bits = 6;
# Número de bits del número
print("Necessitem %d bits " %bits)
4. Volem saber si una persona és major d’edat, per això llegirem la data de naixement(dia_neix, mes_neix i any_neix).
- Utilitzeu el següent codi per obtenir dia, mes i any actual
from datetime import date
#Dia, mes i any actual
AVUI = date.today()
DIA_ACTUAL = AVUI.day
MES_ACTUAL = AVUI.month
ANY_ACTUAL = AVUI.year
from datetime import date
print("Programa major d'edat")
# Constants dia, mes i any actual
AVUI = date.today()
DIA_ACTUAL = AVUI.day
MES_ACTUAL = AVUI.month
ANY_ACTUAL = AVUI.year
# Entrada dia, mes i any de neixement
dia_neix = int(input("Introdueix el dia de naixement: "))
mes_neix = int(input("Introdueix el mes de naixement: "))
any_neix = int(input("Introdueix el any de naixement: "))
# Determinar majoria d'edat
if (ANY_ACTUAL - any_neix < 18):
print("Ets menor d'edat!")
elif (ANY_ACTUAL - any_neix > 18):
print("Ets major d'edat!")
elif (MES_ACTUAL > mes_neix):
print("Ets major d'edat!")
elif (MES_ACTUAL < mes_neix):
print("Ets menor d'edat!")
elif (DIA_ACTUAL >= dia_neix):
print("Ets major d'edat!")
else:
print("Ets menor d'edat!")
5. Escriu un programa que llegeixi un número enter positiu i determini si es un número de 1, 2,3 o 4 xifres.
Control d'errors: Escriu els missatges pertinents si han introduït un valor fora del rang o si no han introduït un número enter.
print("Programa xifres d'un número")
# Entrada de dades
numero = input("Introdueix un número: ")
try:
numero = int(numero) # En el cas de que no sigui un enter saltarà a la zona de excepcions
if numero >= 0 and numero <10000:
# Determinar les xifres del número
if numero <10:
xifres = 1
elif numero <100:
xifres = 2
elif numero <1000:
xifres = 3
else:
xifres = 4
print("El número %d és de %d xifres" %(numero,xifres)) # Xifres del número
else:
print("El número %d no és dins del rang [0..9999]" %numero) # Número fora del rang
except ValueError:
print("La entrada és incorrecte: escriu un número enter!") # No és un enter
6. En un casino de jocs es desitja mostrar els missatges respectius per els punts obtinguts en el llançament de tres daus d'un client, d'acord als següents resultats:
- a) Si els tres daus són sis, mostrar el missatge "Excel·lent"
- b) Si dos daus són sis, mostrar el missatge "Molt bé"
- c) Si un dau és sis, mostrar el missatge "Regular"
- d) Si cap dau és sis, mostrar el missatge "Pèssim"
- Utilitzeu el següent codi per simular el llançament d'un dau
from random import randint
# Simulació del llançament d'un dau
dau = randint(1,6)
from random import randint
print("Programa joc de daus")
# Simulació del llançament de 3 daus
dau1 = randint(1,6)
dau2 = randint(1,6)
dau3 = randint(1,6)
print("Has tret: %d %d %d " %(dau1,dau2,dau3))
# Determinar quants sisos s'han obtingut en el llançament
if (dau1 == 6) and (dau2 ==6) and (dau3 ==6):
print("Excel·lent!")
elif ((dau1 == 6) and (dau2 ==6)) or ((dau1 == 6) and (dau3 == 6)) or ((dau2 == 6) and (dau3 == 6)):
print("Molt bé!")
elif (dau1 == 6) or (dau2 ==6) or (dau3 == 6):
print("Regular")
else:
print("Pèssim")
7. Demaneu tres números enters positius i mostreu-los en ordre descendent.
Control d'errors: Escriu els missatges pertinents si han introduït un valor negatiu, si no han introduït un enter o si han introduït números iguals.
print("Ordenació de tres números enters positius")
# Entrada dels 3 números
num1 = input("Introdueix un número: ")
num2 = input("Introdueix un segon número: ")
num3 = input("Introdueix un tercer número: ")
try:
num1 = int(num1) # En el cas de que no siguin enters saltarà a la zona de excepcions
num2 = int(num2)
num3 = int(num3)
if num1 >= 0 and num2 >= 0 and num3 >= 0: # Comprovació números positius
if not (num1 == num2 or num1 == num3 or num2 == num3): # Comprovació números diferents
if num1 > num2 and num1 > num3:
if num2 > num3:
print(" %d %d %d" %(num1,num2,num3))
else:
print(" %d %d %d" %(num1,num3,num2))
elif num2 > num3:
if num1 > num3:
print(" %d %d %d" %(num2,num1,num3))
else:
print(" %d %d %d" %(num2,num3,num1))
elif num1 > num2:
print(" %d %d %d" %(num3,num1,num2))
else:
print(" %d %d %d" %(num3,num2,num1))
else:
print("Els números no són diferents!")
else:
print("Els números no són enters positius!")
except ValueError:
print("La entrada és incorrecte: escriu només números enters positius!") # No són números enters
8. Tres persones les edats de les quals s’han de llegir per teclat, van a un parc d’atraccions. El cost de l’entrada normal és de 20€. Però tenen els següents descomptes:
- A. Els menors de 5 anys no paguen però han d’anar acompanyats d’algun més gran de 12 anys, sinó no poden entrar
- B. Entre els 5 i els 12 anys paguen el 25 % de l’entrada
- C. Entre els 12 anys i els 16 anys paguen el 50 % de l’entrada
- D. Els més grans de 16 anys paguen l’entrada normal, excepte que els tres estiguin entre els 16 i els 18 anys, que aquest cas com hi ha una oferta, només pagaran dues entrades normals entre els tres.
- E. Els més grans de 65 anys no paguen
Quan costaran les tres entrades?
print("Import entrades parc d'atraccions")
# Entrada edats de les tres persones
edat_P1 = int(input("Introdueix l'edat de la primera persona: "))
edat_P2 = int(input("Introdueix l'edat de la segona persona: "))
edat_P3 = int(input("Introdueix l'edat de la tercera persona: "))
# Comprovem si poden entrar...
if (((edat_P1 < 5) or (edat_P2 < 5) or (edat_P3 < 5)) and (edat_P1 < 12) and (edat_P2 < 12) and (edat_P3 < 12)):
print("NO ENTREN!!!");
else:
# Comprovem si tenen dret a l'oferta...
if ((edat_P1 >= 16) and (edat_P1 < 18) and (edat_P2 >= 16) and (edat_P2 < 18) and (edat_P3 >= 16) and (edat_P3 < 18)):
total = 40
else:
# Fem el calcul per la primera persona
if ((edat_P1 >= 5) and (edat_P1 < 12)):
ent_P1 = 5
elif ((edat_P1 >= 12) and (edat_P1 < 16)):
ent_P1 = 10
elif ((edat_P1 >= 16) and (edat_P1 < 65)):
ent_P1 = 20
else:
ent_P1 = 0
# Ho repetim per a la segona persona
if ((edat_P2 >= 5) and (edat_P2 < 12)):
ent_P2 = 5
elif ((edat_P2 >= 12) and (edat_P2 < 16)):
ent_P2 = 10
elif ((edat_P2 >= 16) and (edat_P2 < 65)):
ent_P2 = 20
else:
ent_P2 = 0
# Ho repetim per a la tercera persona
if ((edat_P3 >= 5) and (edat_P3 < 12)):
ent_P3 = 5
elif ((edat_P3 >= 12) and (edat_P3 < 16)):
ent_P3 = 10
elif ((edat_P3 >= 16) and (edat_P3 < 65)):
ent_P3 = 20
else:
ent_P3 = 0
# Calculem el total de les entrades
total = ent_P1 + ent_P2 + ent_P3
print("El cost de les entrades es de %d €" %total)
A2.2 Exercicis avaluar expressions lògiques
Avalueu les següents condicions en funció dels valors corresponents de les variables
1. ((y<x) or ((y>1) and (x>1)))
a) x=1 y=1 b) x=1 y=2 c) x=2 y=1 d) x=2 y=2 e) x=0 y=0 f) x=1 y=0
2. (((x>3) and (x<6)) or not((y>3) and (y<6))) <==> (3<x<6) or not (3<y<6)
a) x=3 y=3 b) x=3 y=4 c) x=4 y=3 d) x=4 y=4
3. (z>x and z>y or x>=y)
a) x=1 y=1 z=1 b) x=1 y=2 z=3 c) x=1 y=3 z=2 d) x=2 y=1 z=3 e) x=2 y=3 z=1 f) x=3 y=2 z=1 g) x=3 y=1 z=2
A2.3 Exercicis trobar expressions lògiques
- Sent num1, num2, num3, num4 variables numèriques, escriviu l'expressió lògica corresponent a:
a) Els valors de num2 i num3 són tots dos superiors al valor de num4. b) Els valors de num1, num2 i num3 són idèntics. c) Els valors de num1, num2 i num3 són idèntics però diferents del valor de num4. d) El valor de num2 està comprès, '''estrictament (<, >)''', entre els valors de num3 i num4, i el valor de num3 és més petit que el valor de num4.
- En un algorisme que analitza els resultats d'exàmens, hi ha 3 variables definides: les variables notaLit, notaCat, notaMat que indiquen respectivament (per a un alumne en particular) les notes de literatura, català i matemàtiques. Totes les notes estan calculades sobre 10 i totes tenen el mateix pes. Escriviu les expressions lògiques corresponents a:
a) La mitjana de les tres notes és superior a 5. b) Les notes de matemàtiques i català són superiors a la mitjana de les tres notes. c) Hi ha, com a mínim, una nota superior a 5. d) Totes les notes són superiors a 5.
- Siguin vendesP1, vendesP2 i vendesP3 tres variables enteres que representen les vendes de tres productes.
- Utilitzant aquestes variables, escriu les expressions que representin les següents afirmacions:
a) Les vendes del producte P1 són les més elevades. b) Cap producte té unes vendes inferiors a 200. c) Algun producte té unes vendes superiors a 400. d) La mitjana de vendes és superior a 500. e) El producte P2 no és el més venut. f) El total de vendes està entre 500 i 1000.
A2.4 Exercicis estructura iterativa
1. Imprimir els números del 1 al 100.
2. Imprimir els números parells del 0 al 98.
3. Imprimir els números del 100 al 1.
4. Demanar cinc números i mostrar la suma.
5. Igual que l'anterior però només sumant els valors més grans de 10.
6. Calcular el producte dels números del 1 al 10.
7. Demanar cinc números enters positius i mostrar el valor més gran.
8. Fer un quadrat d'asteriscos. Per exemple si l'usuari introdueix el valor 5, imprimirà:
* * * * * * * * * * * * * * * * * * * * * * * * *
9. Com l'anterior però fent un quadrat buit. Per exemple si l'usuari introdueix el valor 5, imprimirà:
* * * * * * * * * * * * * * * *
10. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
* * * * * * * * * * * * * * *
11. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
* * * * * * * * * * * * * * *
12. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
* * * * * * * * * * * * * * *
13. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
* * * * * * * * * * * * * * *
Bucles niuats
14. Escriu un programa que llegeixi un número num i mostri per pantalla el següent:
Exemple num=5 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
15. Escriu un programa que llegeixi un número i mostri per pantalla el següent:
Exemple num=5 5 4 3 2 1 4 3 2 1 3 2 1 2 1 1
16. Escriu un programa que llegeixi un número i mostri per pantalla el següent:
Exemple num=5 1 2 1 3 2 1 4 3 2 1 5 4 3 2 1
17. Escriu un programa que llegeixi un número imparell i mostri per pantalla el següent:
Exemple num=9 1 3 1 5 3 1 7 5 3 1 9 7 5 3 1
18. Escriu un programa que llegeixi un número enter més gran que 0 i mostri el factorial de tots els números entre 1 i el número introduït.
Exemple num = 4 1! = 1 2! = 2 * 1 = 2 3! = 3 * 2 * 1 = 6 4! = 4 * 3 * 2 * 1 = 24
19. Escriu un programa que mostri la següent sortida:
ZYWXVUTSRQPONMLKJIHGFEDCBA YWXVUTSRQPONMLKJIHGFEDCBA WXVUTSRQPONMLKJIHGFEDCBA XVUTSRQPONMLKJIHGFEDCBA VUTSRQPONMLKJIHGFEDCBA UTSRQPONMLKJIHGFEDCBA TSRQPONMLKJIHGFEDCBA SRQPONMLKJIHGFEDCBA RQPONMLKJIHGFEDCBA QPONMLKJIHGFEDCBA PONMLKJIHGFEDCBA ONMLKJIHGFEDCBA NMLKJIHGFEDCBA MLKJIHGFEDCBA LKJIHGFEDCBA KJIHGFEDCBA JIHGFEDCBA IHGFEDCBA HGFEDCBA GFEDCBA FEDCBA EDCBA DCBA CBA BA A
20. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
1 2 3 4 5 1 2 3 4 1 2 3 1 2 1
21. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
1 1 1 1 1 2 2 2 2 3 3 3 4 4 5
22. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
5 5 5 5 5 4 4 4 4 3 3 3 2 2 1
23. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 7)
1 1 1 1 1 1 1 1 2 3 4 5 6 3 3 3 3 3 1 2 3 4 5 5 5 1 2 7
24. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 7)
7 7 7 7 7 7 7 6 5 4 3 2 1 5 5 5 5 5 4 3 2 1 3 3 3 2 1 1
A2.5 Exercicis estructura iterativa: recorregut
1. Escriu un programa que llegeixi números enters positius i mostri el més petit i el més gran. El programa finalitzarà quan ens introdueixin un número negatiu.
2. Donat un número llegit per teclat, calcula el número de dígits que té.
3. Donat un número llegit per teclat, realitzar la suma de tots els dígits del número.
Per exemple si introdueixen el valor 1238, s'imprimirà el valor : 1+2+3+8 --> 14
4. Donat un número llegit per teclat, realitzar la suma de tots els dígits parells del número.
5. Donat un número llegit per teclat, determina el número de dígits més grans que 5.
6. Escriu un programa que llegeixi números enters positius (finalitzarà amb la introducció de -1) i mostri totes les parelles de números consecutius que apareixen a la seqüència.
Per exemple si la seqüència de números és: 7 10 11 23 4 5 8 10 11 12 -1, mostrarà: 10 11, 4 5, 10 11, 11 12
A2.6 Exercicis estructura iterativa: cerca
1. Escriu un programa que indiqui si existeix o no algun múltiple de 5 en una seqüència de números naturals finalitzada en -1 (seria interessant que una vegada trobat un múltiple, el programa no continués executant-se).
2. Escriu un programa que determini si un número enter es primer o no (recorda que un número primer només és divisible per 1 i per ell mateix).
3. Escriu un programa que vagi llegint notes (per finalitzar -1) i indiqui si hi ha com a mínim tres suspesos. Només cal dir sí o no.
4. Escriu un programa que vagi llegint números positius (per finalitzar -1) i indiqui si tots són parells.
5. Escriu un programa que llegeixi un número i indiqui si tots els dígits són parells.
6. Escriu un programa que vagi llegint números positius (per finalitzar -1) i indiqui si cada valor és més gran que l'anterior.
A4.1 Exercicis Cadenes
1. L’última lletra del DNI pot calcular-se a partir del seus números. Per a això només has de dividir el número per 23 i quedar-te amb la resta. Fes un programa per calcular la lletra d’un DNI. La lletra que correspon a cada número la tens en aquesta taula:
0 - T 1 - R 2 - W 3 - A 4 - G 5 - M 6 - Y 7 - F 8 - P 9 - D 10 - X 11 - B 12 - N 13 - J 14 - Z 15 - S 16 - Q 17 - V 18 - H 19 - L 20 - C 21 - K 22 – E
2. Fes un programa per que verifiqui que la lletra d’un DNI es correspon amb el seu número:
3. Genera un programa que encripti una cadena de caràcters. Per exemple: '“avadakedavra”' encriptat es '“bwbeblfebwsb”' i el mètode d’encriptació és canviar un caràcter pel seu successor a l’abecedari (el successor de ‘z’ és ‘a’).
4. Genera un programa que encripti una text de caràcters. Per exemple: '“hola que tal”' encriptat es '“ipmb@rvf@ubm”' i el mètode d’encriptació és canviar un caràcter pel seu successor a l’abecedari (el successor de ‘z’ és ‘a’ i el caràcter ' ' es substitueix per '@').
5. Feu un programa que si li passem un nom i un cognom com a paràmetres ens doni la benvinguda:
Benvingut Sr. ... i si no l'hi donem digui : Hola desconegut.
6. Feu un programa que calculi la mitjana aritmètica dels valors passats com a paràmetres. Si no es passa cap paràmetre sortirà un missatge d’error i si el primer paràmetre és –ajut el programa traurà una petita explicació del funcionament.
7. Genereu un programa anomenat ComptaAsString que compti quantes lletres 'a' conté una cadena de text. El text per tractar pot ser qualsevol i el podeu declarar com una constant en el codi font.
8. Fes un programa que, primer demani a l’usuari escriure una rere l’altra, tres paraules que només continguin lletres minúscules. A continuació el programa ha d’escriure quina és la paraula més llarga i quina és l’alfabèticament menor.
9. Fes un programa que llegeixi una frase i un número enter N i ens digui quines i quantes paraules tenen longitud N.
10. Fes un programa que llegeixi una frase i la mostri invertida.
11. Volem un programa per treballar amb cadenes que mitjançant un menú ens permeti les següents opcions:
- Mostrar els n primers caràcters d’una cadena
- Mostrar els n últims caràcters d’una cadena (d’esquerra a dreta)
- Eliminar els espais en blanc que hi hagi al final de la cadena
- Eliminar els espais en blanc que hi hagi al principi de la cadena
- Eliminar d’una cadena els n caràcters que apareixen a partir de la posició p
- Inserir una cadena dins d’una altra a partir de la posició p
- Comptar el nombre de vegades que apareix una cadena dins d’una altra
- Esborrar totes les aparicions d’una cadena dins d’una altra
12. Escriu un programa per comparar dues cadenes introduïdes per l’usuari. L’aplicació
rebrà com a entrada el nombre de caràcters a comparar i l’índex inicial de cada cadena
de la comparació. L’aplicació haurà d’indicar si les subcadenes són iguals.
13. Escriu una aplicació que rebi com a entrada una línia de text i un caràcter de cerca
i indiqui el nombre d’ocurrències del caràcter en el text.
</source> -->
14. Féu un programa que llegeixi una cadena de caràcters i indiqui si la cadena és un palíndrom. Un palíndrom és una cadena que es llegeix d’igual manera d’esquerra a dreta que de dreta a esquerra. Com per exemple : dabale arroz a la zorra el abad. Cal entendre que per poder-ho fer d’aquesta manera no han d’haver-hi espais en blanc.
15. languageGames: En molts idiomes disposem de variants lúdiques de l'idioma. Aquest programa codificarà dos mètodes que ens permetran traduir paraules d'idiomes coneguts a variants lúdiques d'aquests. Expliquem primer aquestes variants:
- a) Jerigonza (variant lúdica del castellà): després de cada vocal s'afegeix una 'p' i es repeteix la vocal.
Exemples:
- “casa” seria “capasapa”
- “Gabriel” seria “Gapabripiepel”
- “murcielago” seria “mupurcipiepelapagopo”
NOTA: Per simplificar-ho suposarem que no s'introdueixen accents.
- b) Basic Pig Latin (variant lúdica de l'anglès): tenim dues regles:
- A les paraules que comencen per vocal se'ls afegeix al darrera el sufix “ay”. Exemples:
- “ant” seria “antay”
- “astronaut” seria “astronautay”
- A les paraules que comencen per consonant, es mouen totes les consonants del davant de la primera vocal al final i s'afegeix el sufix “ay”. Exemples:
- “mess” seria “essmay”
- “father” seria “atherfay”
- “chick” seria “ickchay”
- “star” seria “arstay”
El programa ha d'implementar les dues variants: jerigonza i basic pig latin.
NOTA: Per simplificar, podeu suposar que la dada d'entrada serà UNA ÚNICA paraula i que aquesta no tindrà ni accents ni caràcters diferents de lletres.
A4.2 Exercicis Llistes
1. Fes un programa que emmagatzemi els mòduls de primer d'ASIX ("Implantació de sistemes operatius", "Gestió de bases de dades", "Programació bàsica" ...) en una llista i a continuació, la mostri per pantalla.
2. Fes un programa que emmagatzemi els mòduls de primer d'ASIX ("Implantació de sistemes operatius", "Gestió de bases de dades", "Programació bàsica" ...) en una llista i a continuació, demani la nota obtinguda de cada mòdul i ens digui quants mòduls ha aprovat, ha suspès o té convalidats.
3. Fes un programa que emmagatzemi els mòduls de primer d'ASIX ("Implantació de sistemes operatius", "Gestió de bases de dades", "Programació bàsica" ...) en una llista i a continuació, demani la nota obtinguda de cada mòdul i elimini de la llista els aprovats i convalidats i mostri els mòduls pendents d'aprovar.
4. Feu un programa que donades dues llistes inicialitzades amb els valors [-3, 5, 1, -4, 8, 20, -9, 2, 11, -1], posi a una tercera llista, per a cada posició, la suma dels elements de les altres llistes.
5. Fes un programa que donada una llista de números ja inicialitzada, la recorri amb un for i quan surti del for imprimeixi el valor més petit de la taula.
6. Fes un programa que donada una llista de números ja inicialitzada, imprimeixi per pantalla els valors en ordre invers.
7. Fes un programa que faci una rotació cap a l’esquerra o cap a la dreta (segons ens indiqui l’usuari) de tots els elements de una llista (en rotació esquerra l’element que està a la primera posició passarà a l’ultima i en rotació dreta l’element que està l’últim passarà a la primera posició).
8. Feu un programa anomenat ParaulesSenars que llegeixi una frase escrita en una sola línia des del teclat i tot seguit escrigui les paraules que hi ha en posició senar (la primera, la tercera, etc.). Per exemple, si s'escriu “Hi havia una vegada un lloc...”, es mostrarà “Hi una un”.
A4.3 Exercicis Diccionaris
1. Escriu un programa que llegeixi una frase i crei un diccionari amb la quantitat d'aparicions de cada caràcter. A continuació, mostra el contingut del diccionari.
2. Escriu un programa, que declari un diccionari amb l'inventari d'un departament d'informàtica (ordinadors sobretaula, portàtils, projectors, impressores, ...). Presenteu un menú amb les opcions necessaris per fer un manteniment de l'inventari (insercions, actualitzacions, eliminacions i llistat). La darrera opció del menú serà per sortir del programa.
3. Escriu un programa que implementi una agenda de telèfons. Utilitza un diccionari amb clau nom del contacte e i valor el seu telèfon. Presenteu un menú amb les opcions: afegir/modificar, cercar contactes, eliminar un contacte i sortir del programa.
Descripció de les opcions:
- Afegir/modificar: demana un nom de contacte. Si es troba en l'agenda ha de mostrar el telèfon i, opcionalment, permetre modificar-lo. Si el nom no es troba enl'agenda es demanarà el telèfon i s'afagirà el contacte a l'agenda.
- Cercar: demana els primers caracters dels noms i mostrarà tots els noms dels contactes que comencin per aquests caracters juntament en els seus respectius telèfons.
- Eliminar: demana el nom d'un contacte i si existeix mostra el seu telèfon i demana confirmació per elimniar-lo; en cas afirmatiu l'eliminarà de l'agenda. Si el contacte no existeix informarà del fet.
- Llistar: mostrarà tots els contactes de l'agenda, juntament amb els seus telèfons.
- Sortir: finalitzarà el programa amb un missatge de comiat.
4. Escriu un programa, que ens permeti emmagatzemar els noms dels alumnes d'una classe i les notes obtingudes. Els alumnes poden tenir diferents número de notes. Utilitza un diccionari amb clau nom de l'alumne i valors les llistes de notes de cada alumne. Presenteu un menú amb les opcions: afegir alumne (sense notes), afegir alumne amb notes, afegir notes a un alumne, modificar una nota (primer cal mostrar-les), eliminar un alumne, mostrar les notes d'un alumne, calcular la nota mitjana, llistar tots els alumnes amb les seves notes i la darrera opció per sortir del programa.
A4.4 Exercicis Tuples
1.Escriviu un programa de Python que calculi el producte, multiplicant tots els números d'una tupla donada.
Original Tuple: (4, 3, 2, 2, -1, 18) Sortida: -864
2. Escriure un programa Python per comptar les ocurrències de tots els elements d'una tupla en una llista.
Utilitzarem un bucle for i comptarem quantes vegades apareix cada element de la llista.
Exemples: Entrada: tupla = ('a', 'a', 'c', 'b', 'd') llista = ['a', 'b'] Sortida: 3
A4.5 Exercicis Tipus definits per l'usuari (clases)
Exemplars llibres
Per a la gestió dels llibres d'una petita biblioteca és precís conèixer el seu títol, autor, l'ISBN (cadena de 17 caràcters: 978-3-16-148410-0), el número d'exemplar (1, 2, 3, ...) i si es troba prestat o no. Escriu un programa en java que:
a) Defineix una estructura denominada ExemplarLlibre que permeti emmagatzemar les dades de qualsevol llibre.
b) Declarara e inicialitza dues variables del tipus ExemplarLlibre
c) Comprova si les variables declarades representen exemplars d'un mateix llibre o de llibres diferents.
Estadístiques cargols
una fàbrica de cargols ens ha sol·licitat desenvolupar un programa en java que permeti obtenir e imprimir les estadístiques d'una determinada mostra de cargols. Per això, ens indiquen que cada cargol es caracteritza per la seva longitud i el seu diàmetre i que ambdues mesures han de emmagatzemar-se en un registre amb dos camps. El programa haurà de:
a) Sol·licitar a l'usuari les dades d'una mostra de cargols (longitud i diàmatre) i els emmagatzemi en una llista.
b) A partir de les dades introduïdes calcular i mostrar per pantalla la mitjana de les longituds i la mitjana dels diàmetres.
Llançament daus
Volem fer un estudi estadístic en relació al llançament d'un dau de sis cares. En concret volem obtenir 100 seqüències i a continuació determinar quina ha estat la seqüencia més llarga, la més curta, el número que s'ha repetit més vegades i el número que més vegades ha tancat una seqüencia.
Una seqüencia acaba quan han sortit totes les cares del dau.
Definiu la classe seqüencia per recullir totes les dades d'una seqüencia.
Per simular el llançament d'un dau utilitzeu la classe Ramdom: