You are on page 1of 12

Generalitat de Catalunya

Departament d’Ensenyament
Institut Obert de Catalunya
Nom i cognoms

2251CFGS Administració de Sistemes Informàtics
2252 CFGS Desenvolupament d'Aplicacions Multiplataforma
Mòdul 3 – Programació bàsica
UF2 – Disseny modular

EAC4
(Curs 2012–13 / 2n semestre)
Presentació i resultats d'aprenentatge
Aquest exercici d’avaluació continuada (EAC) es correspon amb els continguts treballats a la unitat 4Programació modular.
Els resultats d'aprenentatge que es plantegen són:





Analitza els conceptes relacionats amb la programació modular
Analitza els avantatges i la necessitat de la programació modular
Aplica el concepte d'anàlisi descendent en l'elaboració de programes.
Modularitza correctament els programes realitzats.
Realitza correctament les crides a funcions i la seva parametrització.
Té en compte l'àmbit de les variables en les crides a les funcions.

Criteris d’avaluació
La puntuació màxima assignada a cada activitat s’indica a l’enunciat.
Els criteris que es tindran en compte per avaluar el treball de l’alumnat són els següents:

Que faci el que es demana.

Que la descomposició del problema en mètodes sigui adequada.

Que s'hagin corregit els errors de compilació i funcioni.

Que sigui codi ordenat i clar: fer servir variables amb nom significatiu.

Tot codi ha de tenir una capçalera apropiada.

Tot el codi ha d'estar correctament indentat (tabulació adequada).

Fer el lliurament en format .zip o .7z (NO s'admet el .rar)

Codi: I71
Versió: 02

Exercici d'avaluació contínua 1

Pàgina 1 de 12

225XM03B2_EAC4_Enunciat_1213S2

Lliurament:
13/03/2013

El termini de lliurament finalitza a les 23:55 h del dia 13/03/2013. El nom del fitxer serà el següent: 225XM03B2_EAC4_Cognom1_InicialDelCognom2. • Intenteu sempre que sigui possible crear mètodes genèrics usant paràmetres d'entrada i sortida per tal que es puguin reutilitzar ja sigui en el mateix programa o en altres • Descriviu abans de cada mètode la seva funcionalitat. Per exemple. els càlculs o procediments requerits i la sortida dels resultats. Criteris d’avaluació i Forma i data de lliurament. Comprimiu tots els fitxers que heu de lliurar (aquest document amb les respostes i els fitxers que us demanen alguns exercicis) amb format zip o 7z (rar no s'adment perquè no és lliure). Tingueu en compte que el sistema no permetrà fer lliuraments després de la data i hora indicades. Codi: I71 Exercici d'avaluació contínua Pàgina 2 de 12 Versió: 02 225XM03B2_EAC4_Enunciat_1213S2 Lliurament: 13/03/2013 . Si cal podeu fer també els comentaris que cregueu oportuns en el codi. dins del termini establert. • Intenteu usar noms auto-descriptius per anomenar les variables i els mètodes de manera que la lectura del codi es faci més comprensible. Elimineu els apartats Presentació i resultats d'aprenentatge. eliminant els apartats Presentació i resultats d'aprenentatge.". Un cop finalitzat l’exercici d’avaluació continuada heu d’enviar el fitxer comprimit esmentat abans des de l'apartat M03 Lliurament EAC4 de l'aula. sense accents ni dièresis. i acabada en punt. Es tracta d'una descripció breu però precisa de les dades que entren el procés que realitza i el resultat obtingut. Pautes generals a seguir en tots els exercicis: • Apliqueu disseny descendent estructurant el codi en diferents mètodes independents que responguin a tasques/objectius concrets. Anomeneu aquest fitxer comprimit amb el mateix criteri que l'assenyalat pel fitxer odt: "225XM03B2_EAC4_Cognom1_InicialDelCognom2. Substituïu Nom i cognoms de la capçalera per les vostres dades personals. ens mostri quantes síl·labes té. l’estudiant Joan García Santos posaria el següent nom al seu fitxer de l’EAC4: 225XM03B2_EAC4_Garcia_S. Pregunta 1 (4 punts) Realitzar un programa que donada una paraula formada per lletres minúscules. • Intenteu separar en mètodes diferents i sempre que sigui possible l'entrada de dades.Formació professional Nom i cognoms Forma i data de lliurament Per respondre les qüestions heu d’utilitzar aquest mateix fitxer. La proposta de solució de l’EAC es publicarà el dia14/03/2013 i les qualificacions el dia 20/03/2013 Enunciat Per publicar la solució heu d’utilitzar aquest mateix model. Criteris d’avaluació i Forma i data de lliurament i substituint Enunciat i Nom i cognoms per Solució. Els cognoms s’escriuran sense accents.

examen. iode.uu Exemples: aire. cada síl·laba es 1 vocal. cuina • Creixents amb consonant velar: gua. iu. • No considereu triftongs ni trencament de diftongs.iu. gui. • El fitxer . • Hi poden haver diftongs. que.Formació professional Nom i cognoms Per fer el programa cal tenir en compte aquestes regles gramaticals: • En general. quilometre • Creixents a l'inici de paraula: ia.ei. hiena.. • S'han de realitzar comentaris en els fragments de codi que ho requereixin per motiu de claredat.ou. ioga • Heu de resoldre l'exercici aplicant disseny descendent..oi. ie. ja que no estem considerant tots els casos. Exemple: Entra una paraula: treure. aigua.au. però per simplificar la complexitat de l'exercici. qua. pauta. es quan hi han dos vocals en una síl·laba. boira. s'ha de considerar que són síl·labes en el casos descrits anteriorment i el programa ha de funcionar amb les paraules que hi ha descrites anteriorment. quo Exemples: quatre. • No estem avaluant les síl·labes mitjançant les normes ortogràfiques. Les solucions monolítiques no es tindran en compte. guo. rei.java Codi: I71 Exercici d'avaluació contínua Pàgina 3 de 12 Versió: 02 225XM03B2_EAC4_Enunciat_1213S2 Lliurament: 13/03/2013 . Nombre de síl·labes=2 Entra una paraula: patata. • En aquest exercici no es penalitzaran l'ús de variables globals ni l'ús de mètodes sense paràmetres.ii.eu.java que enviareu per aquest exercici s'anomenarà Eac4_001. ioga. gue. quota. Nombre de síl·labes =3 Entra una paraula: quina Nombre de síl·labes =2 Cal que també tingueu en compte que: • S'avaluarà la correcció del programa per les següents paraules: treure. patata. Exemples: iogurt. quina. io. maquina. qui.ui. Per fer aquest programa només considerem els següents diftongs: • Decreixents: ai.

String actual.equals("o") | a.int index){ int i. i=index.length() & !trobat){ actual = paraula.equals("i") | a.equals("oi")) ||(a. /* Si l'actual es vocal*/ if (esVocal(actual)) { /* Si es vocal llavors pot ser final de silaba o diftong */ /* En el cas que estiguem a principi de paraula*/ if (i==0){ /*Comprobem si tenim un diftong d'inici */ if(esDiftongInici(paraula.equals("io")) return true.i+2).silaba="".equals("eu")) ||(a.length()-2) posterior=paraula.substring(index.io.Formació professional Nom i cognoms Copieu a continuació el codi .java.equals("uu"))) return true. } /* Comprovem si es diftong d'inici */ public static boolean esDiftongInici(String a){ if ((a.equals("ou")) || (a.i+2))) { /* Hem trobat una cas com ia. else return false. trobat=true. else return false.equals("q") | a. } /* Comprovem si es Diftong */ public static boolean esDiftong(String a){ if ((a. /* Comencem a separar silabes */ boolean trobat=false.equals("ia"))|| (a.equals("u")) return true.anterior.equals("iu"))) /* Funció principal de separació de silabes */ public static int separarSilabes(String paraula. else return false.ie.posterior.equals("ii")) || (a. else return false. public static boolean esVocal(String a){ if (a.substring(i+1. while (i<paraula. anterior=paraula. } else { silaba=actual.equals("ai")) || (a.equals("au")) || (a. sempre que existeixi */ if(i <=paraula.index+1). } } /* Si la que ve posteriorment es final de paraula */ Codi: I71 Exercici d'avaluació contínua Pàgina 4 de 12 Versió: 02 225XM03B2_EAC4_Enunciat_1213S2 Lliurament: 13/03/2013 .i+1).equals("ui")) ||(a.substring(i.iu */ silaba=actual+posterior. else posterior="a".equals("a") | a.equals("ie")) || (a. trobat=true.substring(i. } || (a. /* Necesitem comprobar la lletra posterior.equals("e") | a. /* Incrementem un valor per no analitzar el posterior*/ i++.equals("g")) return true. } /* Comprovem si es G o Q */ public static boolean esQoG(String a){ if (a.

"pauta". Scanner lector = new Scanner(System. Codi: I71 Exercici d'avaluació contínua Pàgina 5 de 12 Versió: 02 225XM03B2_EAC4_Enunciat_1213S2 Lliurament: 13/03/2013 . int index_nou. trobat=true. tanquem silaba */ if (!esVocal(posterior) ) { trobat=true.substring(i+2.equals("u") & esVocal(paraula. String MARCA_FI = "FI"."quoniam"}. String paraula. } public static void main(String[] args){ //String[] paraules = {"patata". podem tenir una posible silaba */ if (esQoG(anterior)& actual. } /* Si la posterior es consonant. numero_silabes=0.i+3) )){ silaba=actual+posterior+paraula.i+3).equals("u") && !trobat){ trobat=false. silaba=silaba+actual. } else { trobat=true. i++.length()) if (posterior.substring(i+2. silaba=silaba+actual. } else{ if (esDiftong(actual+posterior)){ silaba=silaba+actual+posterior. System.println("Inserta paraula (FI per acabar)"). if (esQoG(actual) && i+3 <paraula. int numero_silabes. String paraula_separada="". i++. do{ paraula_separada=""."examen". trobat=true. } } anterior=actual.next(). "ioga". index_nou=0."aigua". paraula = lector. System. } return i.in)."quina".println("******** Paraula :"+paraula+"***************"). i++.out. } } } /* Consonant */ else { anterior=actual.Formació professional Nom i cognoms if (!esVocal(posterior)&&i+2==paraula. i=i+2.length()){ silaba=silaba+actual+posterior. index=0. trobat=true.out. } } /* Si es Vocal l'anterior*/ if (!esVocal(anterior)){ /* Si la anterior era constonant. // Un cop definides les paraules que volem buscar int index."maquina".

l'entorn de netbeans amb el vostre codi font. } System. el vostre nom. paraula = lector. Codi: I71 Exercici d'avaluació contínua Pàgina 6 de 12 Versió: 02 225XM03B2_EAC4_Enunciat_1213S2 Lliurament: 13/03/2013 .println("Inserta paraula (FI per acabar)"). Cal que aparegui la data d'avui. } Copieu a continuació una captura de la vostra pantalla que mostri l'execució del programa.out.next().Formació professional Nom i cognoms while (index<paraula.index). } while (!paraula.println("Numero de silabes: "+numero_silabes). i la finestra amb el resultat d'execució. System.equals("FI")). numero_silabes++.out.length()){ index_nou = separarSilabes(paraula. index=index_nou.

Formació professional Nom i cognoms Pregunta 2 (3 punts) Realitzeu un programa que ens doni els números primers que hi ha entre dos números entrats pel teclat. En el cas de que no compleixi les condicions anterior ens ho ha de demanar tantes vegades fins a complir-la. Exemple: Entra rang de valors: 100 50 Error. La sortida del programa. L'usuari ha d'entrar dos números. int s) { if ((p>0) & (s>0) & (p<s)) return true. haurà de mostrar els números primers que hi han entre els dos rangs de valors. • S'han de realitzar comentaris en els fragments de codi que ho requereixin per motiu de claredat. Les solucions monolítiques no es tindran en compte. else return false.19 Cal que també tingueu en compte que: • Heu de resoldre l'exercici aplicant disseny descendent.java. 10 20 Els números primers són: 11.13. torna a entrar valors. heu de controlar que el primer sigui més petit que el segon i que els dos números siguin positius. while (numero % i != 0 && i<=numero/2) { i++.java que enviareu per aquest exercici s'anomenarà Eac4_002. • El fitxer . } if (numero % i == 0) Codi: I71 Exercici d'avaluació contínua Pàgina 7 de 12 Versió: 02 225XM03B2_EAC4_Enunciat_1213S2 Lliurament: 13/03/2013 .17. public static boolean numerocorrecte(int p.java Copieu a continuació el codi . } public static boolean esprimer(int numero) { int i=2. • Afegiu entrades (paràmetres) i sortides (retorns) al mètodes quan us calgui per evitar l'ús de variables globals.

println("Entra primer numero rang"). el vostre nom.in).println("Entra segon numero rang"). rang_segon = lector.nextInt(). i la finestra amb el resultat d'execució. do { Scanner lector = new Scanner(System.i++) { if (esprimer(i)) System. rang_segon=0. rang_primer = lector. System. Cal que aparegui la data d'avui.nextInt(). } } Copieu a continuació una captura de la vostra pantalla que mostri l'execució del programa. Codi: I71 Exercici d'avaluació contínua Pàgina 8 de 12 Versió: 02 225XM03B2_EAC4_Enunciat_1213S2 Lliurament: 13/03/2013 . l'entorn de netbeans amb el vostre codi font.println(i). else return true. for (int i=rang_primer. }while (!numerocorrecte(rang_primer.rang_segon)).i<=rang_segon.out.Formació professional Nom i cognoms return false. } public static void main (String[] args){ int rang_primer.out. System.out.

n2=0.Formació professional Nom i cognoms Pregunta 3 (3 punts) Realitzar un programa que faci operacions amb fraccions entrades pel teclat en funció de la opció triada en el seguent menú d'opcions: **MENÚ** 1. Sortir Esculliu una opció: El programa ha de fer operacions amb fraccions de números naturals. public static int simplifica_fraccio(int num. if(v==0) return u. int denom) { int u = Math.abs(num). tornant a mostrar el menú.java que enviareu per aquest exercici s'anomenarà Eac4_003. u = v. Suma fraccions 2. Un cop mostrat el resultat ha de preguntar si volem continuar.d2=0. Restar fraccions 3. • El fitxer . El primer que farà es mostrar un menú i llavors demanarà les fraccions. mai variables globals). public static int n1=1. while(v!=0){ r = u%v.abs(denom). • Sempre que sigui possible. per finalment mostrar el resultat.java • No cal buscar càlculs optims de simplicar fraccions o calcular comuns mútliples per fer els càlculs. Copieu a continuació el codi . } return u. v = r. int v = Math. int r. Cal tenir en compte: • Heu de resoldre l'exercici aplicant disseny descendent. Multiplicar fraccions 4.d1=1. Les solucions monolítiques no es tindran en compte.java. Dividir fraccions 5. cal usar paràmetres d'entrada i sortida per tractar totes les dades (en qualsevol cas. } Codi: I71 Exercici d'avaluació contínua Pàgina 9 de 12 Versió: 02 225XM03B2_EAC4_Enunciat_1213S2 Lliurament: 13/03/2013 .

out.out.out. int mcd = simplifica_fraccio(numerador.println("3. } public static void resta_fraccions(int n1.denominador).in). } public static void divid_fraccions(int n1.Formació professional Nom i cognoms public static void suma_fraccions(int n1. opcio = lector.int n2. int numerador=(n1 * d2 .println("2.println("Resultat es :" + numerador/mcd + "/"+ denominador/mcd). }while (opcio<1 || opcio>5). System. System. //return suma.out. int mcd = simplifica_fraccio(numerador. int d2) { int mult.int n2. System.denominador).println(n1+" "+ d1 +" "+ n2 +" " +d2).Sortir \n").Suma fraccions \n"). int denominador=(d1*d2).println(n1+" "+ d1 +" "+ n2 +" " +d2).int d1. int mcd = simplifica_fraccio(numerador. Codi: I71 Exercici d'avaluació contínua Pàgina 10 de 12 Versió: 02 225XM03B2_EAC4_Enunciat_1213S2 Lliurament: 13/03/2013 .out. //entrar_dades().out. int d2) { int suma. System. System. //return suma. do { System.out. int mcd = simplifica_fraccio(numerador. System. System.out.out. } public static int menu() { int opcio.nextInt().int d1.println("4. int denominador=(d1 * d2). System.println("Resultat es :" + numerador/mcd + "/"+ denominador/mcd).int d1.println(n1+" "+ d1 +" "+ n2 +" " +d2). int numerador=(n1 * d2). int denominador=(n2 * d1).denominador).out. //entrar_dades(). System.int d1. Scanner lector = new Scanner(System.Multiplicar fraccions \n"). //return suma.int n2. } public static void mult_fraccions(int n1.Restar fraccions \n"). //entrar_dades(). int numerador=(n1 * d2 + n2 * d1).out. //entrar_dades().println("1.n2 * d1).int n2.println("Resultat es :" + numerador/mcd + "/"+ denominador/mcd).println("5.out.println("Resultat es :" + numerador/mcd + "/"+ denominador/mcd). int d2) { int resta.println(n1+" "+ d1 +" "+ n2 +" " +d2).out. System. int denominador=(d1*d2). int d2) { int dividir.println("*********************** EXERCICI 3 ************* \n"). System.denominador). System.Dividir fraccions \n").out. int numerador=(n1 * n2). System.

d2). opcio=menu().n2.println("Entra denominador 1 \n"). d1=lector.println("Entra denominador 2 \n"). Cal que aparegui la data d'avui. switch (opcio) { case 1: suma_fraccions(n1. System. break.nextInt().n2. Codi: I71 Exercici d'avaluació contínua Pàgina 11 de 12 Versió: 02 225XM03B2_EAC4_Enunciat_1213S2 Lliurament: 13/03/2013 .d1. System.d2).n2.nextInt().out. l'entorn de netbeans amb el vostre codi font.d1.out.println("Entra numerador 2 \n").println("Entra numerador 1 \n"). case 3: mult_fraccions(n1. break. case 4: divid_fraccions(n1.in). el vostre nom. case 2: resta_fraccions(n1. break. System.d1. d2=lector.n2. n2=lector. } public static void main(String[] args) { int opcio.out.d2). n1=lector.nextInt().d1. } opcio=menu().d2).nextInt(). } } Copieu a continuació una captura de la vostra pantalla que mostri l'execució del programa. i la finestra amb el resultat d'execució. System.Formació professional Nom i cognoms return opcio.out. while (opcio != 5) { Scanner lector = new Scanner(System. break.

Formació professional Nom i cognoms Codi: I71 Exercici d'avaluació contínua Pàgina 12 de 12 Versió: 02 225XM03B2_EAC4_Enunciat_1213S2 Lliurament: 13/03/2013 .