Diferència entre revisions de la pàgina «ASIX-M3-UF1-Banc de Solucions»

De wikiserver
Dreceres ràpides: navegació, cerca
Línia 253: Línia 253:
 
</source>
 
</source>
 
-->
 
-->
 +
 +
==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.
 +
 +
<source lang="phyton">
 +
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);
 +
</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.
 +
 +
<source lang="phyton">
 +
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)
 +
</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.
 +
 +
 +
<source lang="phyton">
 +
print("Programa dígits d'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)
 +
</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).
 +
 +
: Utilitzeu el següent codi per obtenir dia, mes i any actual
 +
<source lang="python">
 +
from datetime import date
 +
 +
#Dia, mes i any actual
 +
 +
AVUI = date.today()
 +
DIA_ACTUAL = AVUI.day
 +
MES_ACTUAL = AVUI.month
 +
ANY_ACTUAL = AVUI.year
 +
</source>
 +
 +
 +
<source lang="phyton">
 +
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!")
 +
</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.
 +
 +
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">
 +
print("Programa xifres d'un número")       
 +
 +
# Determinar majoria d'edat
 +
 +
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-10000" %numero) # Número fora del rang
 +
except ValueError:       
 +
  print("La entrada és incorrecte: escriu un número enter!")  # No és un enter
 +
</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:
 +
 +
: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
 +
<source lang="python">
 +
from random import randint
 +
 +
# Simulació del llançament d'un dau
 +
 +
dau = randint(1,6)
 +
</source>
 +
 +
 +
<!--
 +
<source lang="phyton">
 +
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")
 +
</source>
 +
-->
 +
 +
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.
 +
 +
<!--
 +
<source lang="phyton">
 +
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
 +
</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:
 +
 +
: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?
 +
 +
<!--
 +
<source lang="phyton">
 +
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)
 +
</source>
 +
-->
 +
  
 
A2.2-Exercicis avaluar expressions lògiques
 
A2.2-Exercicis avaluar expressions lògiques

Revisió del 11:53, 2 nov 2020

A1.1 Exercicis seqüencials

1. Volem un programa que donat dos números enters ens mostri el resultat de les cinc operacions aritmètiques fetes amb aquests valors.

2. L’amo d’una botiga compra un article a un determinat preu. Mostreu el preu al qual el vendrà, si intenta guanyar un 30%.

3. En un hospital existeixen tres departaments: Ginecologia, Pediatria i Traumatologia.

El pressupost anual de l’hospital es reparteix així:

Ginecologia : 50%
Pediatria: 30%
Traumatologia: 20%

Obteniu la quantitat de diners que rebrà cada departament, per a qualsevol pressupost (que llegireu des de teclat).

4. Un alumne vol saber la seva nota final de programació. Aquesta nota es calcula així:

55% de la mitjana de tres exercicis
30% de la nota de l’examen
15% de la nota d’una pràctica final

5. Una família està formada per 6 membres: dos germans (Joan i Marta), els dos pares i els dos avis materns. De les seves edats sabem el següent:

a. L’avi té sis vegades l’edat de la Marta
b. L’avia té la suma de les edats dels pares menys l’edat de la Marta
c. L’edat del Joan és el resultat de fer el mòdul entre l’edat del pare i la de la Marta
d. L’edat de la mare és el triple de l’edat de la Marta afegint-li l’edat del Joan
e. L’edat del pare és el resultat de multiplicar per 6, la divisió entera entre l’edat de l’avi i l’edat de la Marta.
f. La Marta té 10 anys.

Quants anys tenen tots ? Mostrar-ho per pantalla.

6. El següent és el sou dels treballadors d’una empresa. Dissenyar un algorisme capaç de llegir el nombre de treballadors de cada tipus i calcular el sou total que s’ha de pagar mensualment.

a) Personal de neteja (500 euros)
b) Auxiliar administratiu (600 euros)
c) Administratiu (700 euros)
d) Informàtic (1200 euros)
e) Morro Consultant Senior (12000 euros)

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

2. Escriure un programa que demani una nota d'una prova i ens digui si ha aprovat o ha suspès.

3. Escriure un programa que demani dos números i digui si són iguals o diferents.

4. Escriure un programa que provi d'endevinar un número secret (poseu el número secret com a constant).

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 dígits d'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.


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)


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.


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?


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 
a) x=1 y=1 False 
b) x=1 y=2 False
c) x=2 y=1 True
d) x=2 y=2 True
e) x=0 y=0 False
f) x=1 y=0 True

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 
a) x=3 y=3 True
b) x=3 y=4 False
c) x=4 y=3 True
d) x=4 y=4 True

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 
a) x=1 y=1 z=1 True
b) x=1 y=2 z=3 True
c) x=1 y=3 z=2 False
d) x=2 y=1 z=3 True
e) x=2 y=3 z=1 False
f) x=3 y=2 z=1 True
g) x=3 y=1 z=2 True

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.
a) Els valors de num2 i num3 són tots dos superiors al valor de num4.

   (num2 > num4 and num3 > num4) 

b) Els valors de num1, num2 i num3 són idèntics.

   (num1 == num2 and num1 == num3)  <==> num1==num2==num3

c) Els valors de num1, num2 i num3 són idèntics però diferents del valor de num4.

   (num1 == num2 and num1 == num3 and num1 !=num4)  <==> num1==num2==num3!=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.

   (num2 > num3 and num2 < num4)  <==> num3<num2<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.
a) La mitjana de les tres notes és superior a 5.

   ((notaLit + notaCat + notaMat) / 3) > 5

b) Les notes de matemàtiques i català són superiors a la mitjana de les tres notes.

   ((notaMat > (notaLit + notaCat * notaMat) / 3) and (notaCat > (notaLit + notaCat * notaMat) / 3))

c) Hi ha, com a mínim, una nota superior a 5.

   (notaLit > 5 or notaCat > 5 or notaMat > 5) 

d) Totes les notes són superiors a 5.

   (notaLit > 5 and notaCat > 5 and notaMat > 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.
a) Les vendes del producte P1 són les més elevades.

   (vendesP1 > vendesP2 and vendesP1 > vendesP3)

b) Cap producte té unes vendes inferiors a 200.

   (vendesP1 >= 200 and vendesP2>= 200 and vendesP3 >= 200)             ERROR!! A and B and C >= 200 Només analitza el valor C

c) Algun producte té unes vendes superiors a 400.

   (vendesP1 > 400 or vendesP2 > 400 or vendesP3 > 400)      

d) La mitjana de vendes és superior a 500.

   ((vendesP1 + vendesP2 + vendesP3) / 3) > 500

e) El producte P2 no és el més venut.

   (vendesP2 < vendesP1 or vendesP2 < vendesP3)

f) El total de vendes està entre 500 i 1000.

   ((vendesP1 + vendesP2 + vendesP3 >= 500) and (vendesP1 + vendesP2 + vendesP3 <= 1000))    
   <==>   500 <= vendesP1+vendesP2+vendesP3 <= 1000

A2.4-Exercicis estructura iterativa

1. Imprimir els números del 1 al 100.

print("Imprimir els números del 1 al 100")

for i in range(1,101):
  print(i ,end= " ")

2. Imprimir els números parells del 0 al 98.

print("Imprimir els números parells del 0 al 98")

for i in range(0,100,2):
  print(i ,end= " ")

3. Imprimir els números del 100 al 1.

print("Imprimir els números del 100 al 1")

for i in range(100,0,-1):
  print(i ,end= " ")

4. Demanar cinc números i mostrar la suma.

print("Demanar cinc números i mostrar la suma")

suma = 0
for _ in range(5):        
  valor = int(input("Introdueix un valor: "))
  suma += valor
print("La suma és: %d" %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 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


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


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.