Llicència
Pots copiar i redistribuir aquest material seguint la llicència Attribution-NonCommercial-ShareAlike 4.0 International CC BY-NC-SA 4.0, indicant-ne autors originals, l'origen (aquesta web), sense fins comercials i mantenint-ne aquesta la llicència
Autors:
Exercicis de Funcions estàtiques i data classes
- Usa el mateix projecte que l'usat als exercicis
- Crea un package cat.itb.elteuusuari(*).dam.m03.uf2.classfun
- La classe de cada exercici ha de ser el nom de l'exercici
(*) elteuusuari correspon a la direcció de correu eltectrònic del centre, sense punts, fins a @itb.cat
Sumari
- RectangleSize
- PeopleCounter
- MostDistantAge
- BuyList
- Lamp
- CampSiteOrganizer
- BasicRobot
- Exercicis avançats
- Exercicis de repàs
RectangleSize
Volem fer un programa que ens digui l'area de rectangles
- L'usuari indrodueix el número de rectangles
- L'usuari entra els dos costats d'un rectangle
- Imprimeix la superfície i el perímetre dels diferents rectangles.
Nota: No pots imprimir els rectangles fins a que s'hagin llegit tots.
Input
2
2.0 4.0
3.5 5.4
Output
Un rectangle de 2.0 x 4.0 té 8.0 d'area i 12 de perímetre.
Un rectangle de 3.5 x 5.4 té 18.9 d'area i 17.8 de perímetre.
PeopleCounter
Volem fer un programa que ens digui la quantitat de gent que hi ha en un edifici.
Quan ja hagi visitat totes les sales introduirà -1
Input
5 3 4 7 8 -1
Output
27
MostDistantAge
Volem fer un programa que donada les edats de totes les persones d'un concert ens digui la diferència entre la persona més gran i la més jove. Per fer-ho l'usuari introduirà les edats de les persones. Quan ja hagi acabat introduirà -1
Input
15 54 23 48 57 23 48 10 48 79 85 34 78 -1
Output
75
BuyList
Fes un programa que ens ajudi a crear una llista de la compra.
L'suauri introduirà primer el nombre de productes.
Per cada producte el nom, el preu i la quantitat que en vol comprar.
Quan acabi imprimeix el resum de la compra.
Input
4
1 Macarrons 2.35
8 Peres 0.35
1 Llet 1.32
2 Galetes 1.23
Output
-------- Compra --------
1 Macarrons (2.35€) - 2.35€
8 Peres (0.35€) - 2.80€
1 Llet (1.32€) - 1.32€
2 Galetes (1.23€) - 2.46€
-------------------------
Total: 8.93€
-------------------------
Lamp
Implementa un programa que simule una lampara, amb les accions:
- TURN ON: Encén la lampara
- TURN OFF: Apaga la lampara
- TOGGLE: Canvia l'estat de la lampara
Després de cada acció mostra si la lampara està encesa.
Exemple
Les línies que comencen per > són el que ha escrit l'usuari
> TURN OFF
false
> TURN ON
true
> TURN OFF
false
> TOGGLE
true
> TOGGLE
false
> END
CampSiteOrganizer
Volem fer un petit programa per gestionar un camping. Volem tenir controlat quantes parceles tenim pelenes i quanta gent tenim.
Quan s'ocupi una parcel·la l'usuari introduirà el número de persones i el nom de la reserva
ENTRA 2 Maria
Quan es buidi una parcel·la l'usuari introduirà el nom de la reserva
MARXA Maria
Per tancar el programa l'usuari introduirà el nom END
Cada cop que marxi algú, imprimeix el número total de persones que hi ha, i el número de parcel·les plenes.
Exemple
Les línies que comencen per > són el que ha escrit l'usuari
> ENTRA 2 Maria
parcel·les: 1
persones: 2
> ENTRA 5 Mar
parcel·les: 2
persones: 7
> MARXA Maria
parcel·les: 1
persones: 5
> END
BasicRobot
Fes un programa que permeti moure un robot en un plà 2D.
El robot ha de guardar la seua posició (X, Y) i la velocitat actual. Per defecte, la posició serà (0, 0) i la velocitat és 1. La velocitat indica la distància que recorre el robot en cada acció.
El robot té les següents accions:
- DALT: El robot és mou cap a dalt (tenint en compte la velocitat).
- BAIX: El robot és mou cap a baix (tenint en compte la velocitat).
- DRETA: El robot és mou cap a la dreta (tenint en compte la velocitat).
- ESQUERRA: El robot és mou cap a la esquerra (tenint en compte la velocitat).
- ACCELERAR: El robot augmenta en 0.5 la velocitat. La velocitat màxima és 10.
- DISMINUIR: El robot augmenta en 0.5 la velocitat. La velocitat mínima és 0.
- POSICIO: El robot imprimeix la seua posició.
- VELOCITAT: El robot imprimeix la seua velocitat.
El programa acaba amb l'acció END.
Exemple
Les línies que comencen per > són el que ha escrit l'usuari
> POSICIO
La posició del robot és (0.0, 0.0)
> DALT
> DALT
> ESQUERRA
> POSICIO
La posició del robot és (-1.0, 2.0)
> ACCELERAR
> VELOCITAT
La velocitat del robot és 1.5
> DALT
> POSICIO
La posició del robot és (-1.0, 3.5)
> END
Exercicis avançats
ThreeInARow
Fes un programa que permeti a dos jugador jugar al tres en ratlla.
Es juga amb un taulell de 3x3. Cada jugador col·loca una peça al taulell alternativament. Guanya qui és capaç de col·locar-les formant una línia de 3, ja sigui vertical, horitzontal o diagonal.
El programa a desenvolupar haurà de mostrar el taulell per pantalla i demanar la tirada al primer jugador.
El jugador escriurà dos números, el primer correspon a les columnes i el segon a les files. S'anirà demanant el torn alternativament a
cada jugador fins que algun dels dos faci el tres en ratlla o bé fins que el taulell estigui ple.
Les fitxes d'un jugador les representarem amb una X i les de l'altre amb una O.
Al final es mostrarà un missatge dient el resultat de la partida: guanyen les X, guanyen les O o empat.
Exemple
Les línies que comencen per > són el que ha escrit l'usuari
> 0 0
X · ·
· · ·
· · ·
> 1 1
X · ·
· 0 ·
· · ·
> 0 1
X X ·
· 0 ·
· · ·
> 2 2
X X ·
· 0 ·
· · 0
> 0 3
X X X
· 0 ·
· · 0
guanyen les X
SquashCounter
Volem fer un marcador per un partit de squash.
Encara que hi ha diferents formes de puntuar, una de les més utilitzades pels jugadors amateurs és jugar a el millor de cinc sets. El jugador que abans guanyi tres sets guanya el partit (i en aquest moment, òbviament, aquest acaba). Els sets es juguen a 9 punts amb tres matisacions:
- Cal guanyar amb un avantatge de al menys dos punts, per tant, si s'arriba a un empat a 8, guanyarà el que arribi a 10. Si a l'intentar-ho s'empata a 9, es jugarà a 11, etc.
- Els punts només pugen a el marcador si el que guanya el punt tenia el servei. És a dir, s'utilitza el que es coneix com "recuperació de la sacada". Si el jugador A saca i guanya el punt, aquest puja al seu marcador. Però si el punt el guanya B, atès que no va ha sacat ell, recupera el servei però no puntua.
- El jugador que guanya un set comença sacant en el següent.
Ens demanen esbrinar el marcador final de cada un dels sets d'un partit d'esquaix coneixent els guanyadors de tots els punts. És possible que el partit no acabi a causa de que el lloguer de la pista arriba a la seva fi. En aquest cas es presentarà el resultat parcial.
L'usuari primer introduirà el número de partits a introduïr.
De cada partit, escriurà qui guanya cada punt i finalitzarà amb una F.
Input
4
AAAAAAAAAF
BBBBBBBBBBF
AAAAAAAABBBBBBBBBBAABBBABBF
BF
Output
9-0
0-9
9-11 0-1
0-0
Bibliografia
Problema extret de Partido de squash d'Acepta el Reto.
Exercicis de repàs
LibraryBooksApp
Volem fer un petit programa per guardar la informació dels diferents llibres que té una biblioteca
Per introdurir el llibres, primer introduirà el número de llibres i la informació de cada llibre (títol, autor, número de pàgines).
Quan acabi volem que mostri la llista de llibres i el número total, el llibre més curt i el llibre més llarg (en cas d'empat el primer que hagi introduït).
Input
3
Lorem
Ot Pi
56
Ipsum
Mar Om
77
Dolor
Lin Om
42
Output
Llibres
------------
Lorem - Ot Pi - 56 pàgines
Ipsum - Mar Om - 77 pàgines
Dolor - Lin Om - 42 pàgines
------------
Total: 3 llibres
Llibre més curt: Dolor - Lin Om - 42 pàgines
Llibre més llarg: Ipsum - Mar Om - 77 pàgines
LibrarySectionsApp
Desde la mateixa biblioteca ens informen que volen tenir el llibres organitzats per seccions. Cada secció té una petita col·lecció de llibres
L'usuari primer introduirà el nombre de seccions.
Per cada secció en volen introduir el nom i els llibres (amb el mateix format que l'exercici anterior).
Un cop introudits, volem tenir, de cada secció imprimir el número de llibres, el llibre més curt i el llibre més llarg
Input
2
Cuina
3
Lorem
Ot Pi
56
Ipsum
Mar Om
77
Dolor
Lin Om
42
Informàtica
1
Java
Fin Max
66
Output
Cuina
------------
N. llibres: 3
Llibre més curt: Dolor - Lin Om - 42 pàgines
Llibre més llarg: Ipsum - Mar Om - 77 pàgines
Informàtica
------------
N. llibres: 1
Llibre més curt: Java - Fin Max - 66 pàgines
Llibre més llarg: Java - Fin Max - 66 pàgines