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 generals
- Utilitza el mateix projecte que fem servir habitualment pel exercicis
- La classe i nom de l'arxiu 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
Generals
CarpentryShop
package: uf4.exercices.carpentryshop
Una petita fusteria ens ha encarregat un programa per fer els tiquets de venta. A la fusteria venen taulells de fusta i llistons. Els taulells de fusta tenen un preu (preuUnitari) per metre quadrat. Quan es venen es ven una llargada i una amplada. Els llistons es venen per un preu al metre i es venen per metres.
Fes un programa que donada una llista de llistons i taulells en calculi el preu total.
L'usuari primer introduirà el nombre d'elements.
A cada línia pels taulells hi haurà:
- taulell preuUnitari llargada amplada
I pel llistons:
- llistó preuUnitari llargada
Legeix l'entrada i imprimeix el preu total
Input
6
Taulell 15 20 12
Taulell 25 20 20
Taulell 15 2 5
Llistó 12 4
Taulell 10 20 12
Llistó 24 6
Output
El preu total és: XX€
AutonomousCarPrototype
package: uf4.exercices.autonomouscar
Volem fer un primer prototip de software amb inteligència artíficial que permeti conduir un cotxe de forma autònoma. Volem que el nostre sistema funcioni per diferents models i marques de cotxes. Així que en una reunió entre diferents empreses hem acordat una interfície comuna anomenada CarSensors:
fun isThereSomethingAt(direction: Direction) : Boolean
fun go(direction : Direction)
fun stop()
Direction pot tenir els valors
FRONT, LEFT, RIGHT.
El cotxe anirà endavant si no té cap obstacle. Si en té, anirà cap a la dreta sempre i quan no hi hagi obstacles sinó cap a l'esquerre. En el cas que tingui obstacles a tot arreu pararà.
El cotxe anirà circulant endavant a cada cicle.
Crea la classe AutonomousCar que tingui el mètode
fun doNextNSteps(n :Int)
Que executa N cicles.
AutonomousCar té com a atribut un CarSensors.
TeamMotto
package: uf4.exercices.motto
Un diari esportiu ens ha dit que els hi fem una petita aplicació. Volem tenir registrada la informació de diversos equips. Cada equip té un nom. A més a més, cada equip té un crit que utilitzen abans de cada partit.
Volem que els equips tinguin la funció shoutMotto() que printi per pantalla el lema de l'equip.
Tenim els següents tres equips, amb els següents lemes:
- Mosques, Bzzzanyarem
- Dragons, Grooarg
- Abelles, Piquem Fort
Fes un programa que crei una llista amb els 3 equips i els printi per pantalla usant el següent mètode:
fun shoutMottos(teams: List<Team>){
for(team in teams)
team.shoutMotto()
}
Output
Bzzzanyarem
Grooarg
Piquem Fort
SportTeamMotto
Ens demanen ampliar l'aplicació anterior. Hem vist que segons a quin esport jugui a cada equip, fan el crit una mica diferent.
- Els equips de basquet, abans de cridar el lema diuen "1,2,3"
- Els de volei després del lema criden un color
- Els de golf, com que són equips indiviuals diuen primer el nom del golfista
Dels equips anteriors tenim
- Mosques és un equip de bàsquet
- Dragons és un equip de volei i el seu color és el verd
- Abelles és un equip de golf i la seva jugadora és la Ko Jin-Young
Fes un programa que crei una llista amb els 3 equips i els printi per pantalla utilitzant el mètode anterior
Output
1,2,3 Bzzzanyarem
Grooarg verd
Ko Jin-Young Piquem Fort
GymControlApp
package: uf4.exercices.gymcontrol
Volem fer un programa pel control d'entrada d'un club esportiu. El programa ha de ser generic per tots els clubs, però tenim clubs que utilitzen un dispositiu de lectura dactilar, uns altres fan servir una targeta electrònica, uns altres enregistren l'entrada manualment… Tots els gimnasos tenen un únic punt d'entrada i per tant, el primer cop que es registra un identificador indica que l'usuari ha entrat, i el segón cop indica que l'usuari ha sortit.
Per tal de resoldre-ho, hem pactat una interfcície comuna anomenada GymControlReader que ens retorna l'identificador del següent usuari registrat:
fun nextId() : String
A més a més, ens donen la implementació següent que és la utilitzada pel sistema de lectura manual
class GymControlManualReader(val scanner:Scanner = Scanner(System.`in`)) : GymControlReader {
override fun nextId() = scanner.next()
}
Crea un programa que, donat un GymControlReader, llegeixi 8 identificadors. Imprimeix per pantalla si l'usuari ha entrat o ha sortit. Utilitza la implementació donada.
Input
1548
8768
4874
1548
1354
1548
3586
1354
Output
1548 Entrada
8768 Entrada
4874 Entrada
1548 Sortida
1354 Entrada
1548 Entrada
3586 Entrada
1354 Sortida