enunciat pac2 uoc, fonaments de programació

15
05.554 · FP · PAC2 · 2014-02 · Estudis d‟Informàtica Multimèdia i Telecomunicació 1 Fonaments de Programació PAC 2 - Segona Prova d'Avaluació Continuada Presentació En aquest document es presenta la segona prova d‟avaluació continuada. Aquesta prova constitueix un 50% de la nota d‟AC. Competències La principal competència del grau que es treballa en aquesta PAC és la capacitat de dissenyar i construir aplicacions informàtiques mitjançant tècniques de desenvolupament, integració i reutilització. Per treballar aquesta competència, la PAC planteja diversos exercicis al voltant de l‟ús d‟accions i funcions. Objectius Distingir entre accions i funcions. Declarar accions i funcions per a resoldre un problema. Definir els paràmetres, amb els tipus de dades corresponents i els modificadors d‟entrada i sortida correctes. Descriure amb precisió què fa funció/acció sense necessitat de saber com ho fa. Saber detectar la correctesa en la crida a accions o funcions, entenent el funcionament dels modificadors d‟entrada i sortida dels paràmetres. Entendre un algorisme i saber fer crides a accions i funcions. Dissenyar una funció/acció. Fer el seguiment, pas a pas, de l‟execució d‟una funció. Mantenir una taula amb els valors que van prenent els objectes a mida que avança l‟execució. Codificar un algorisme en C. Fer proves per a veure si el funcionament és correcte. Comprensió d‟algorismes en C. Descripció de la PAC La PAC consta de 8 exercicis, que treballen els diferents objectius que s‟han enumerat com a claus en aquesta prova. Cada exercici consta d‟un enunciat i un pes que indica el percentatge que representa respecte a la nota global.

Upload: marti54321

Post on 23-Dec-2015

70 views

Category:

Documents


8 download

DESCRIPTION

Aquest és l'enunciat de la pràctica 2 del segon semestre de 2014. Correspon a l'assignatura de Fonaments de programació.

TRANSCRIPT

Page 1: Enunciat PAC2 UOC, Fonaments de programació

05.554 · FP · PAC2 · 2014-02 · Estudis d‟Informàtica Multimèdia i Telecomunicació

1

Fonaments de Programació PAC 2 - Segona Prova d'Avaluació Continuada Presentació

En aquest document es presenta la segona prova d‟avaluació continuada. Aquesta prova constitueix un 50% de la nota d‟AC.

Competències

La principal competència del grau que es treballa en aquesta PAC és la capacitat de dissenyar i construir aplicacions informàtiques mitjançant tècniques de desenvolupament, integració i reutilització. Per treballar aquesta competència, la PAC planteja diversos exercicis al voltant de l‟ús d‟accions i funcions.

Objectius

Distingir entre accions i funcions. Declarar accions i funcions per a resoldre un problema. Definir els paràmetres, amb els tipus de dades corresponents i els modificadors d‟entrada i sortida correctes. Descriure amb precisió què fa funció/acció sense necessitat de saber com ho fa. Saber detectar la correctesa en la crida a accions o funcions, entenent el funcionament dels modificadors d‟entrada i sortida dels paràmetres. Entendre un algorisme i saber fer crides a accions i funcions. Dissenyar una funció/acció. Fer el seguiment, pas a pas, de l‟execució d‟una funció. Mantenir una taula amb els valors que van prenent els objectes a mida que avança l‟execució. Codificar un algorisme en C. Fer proves per a veure si el funcionament és correcte. Comprensió d‟algorismes en C.

Descripció de la PAC

La PAC consta de 8 exercicis, que treballen els diferents objectius que s‟han enumerat com a claus en aquesta prova. Cada exercici consta d‟un enunciat i un pes que indica el percentatge que representa respecte a la nota global.

Page 2: Enunciat PAC2 UOC, Fonaments de programació

05.554 · FP · PAC2 · 2014-02 · Estudis d‟Informàtica Multimèdia i Telecomunicació

2

Recursos

Serà necessari llegir prèviament el capítols del temari relatius a l‟ús d‟accions i funcions, tant dels apunts de l‟assignatura com de les TS que trobareu en les cites del calendari de la vostra aula. Addicionalment, per resoldre els exercicis de codificació, caldrà que reviseu les taules de traducció i tot el material relacionat amb la codificació en C que trobareu a l‟apartat de “recursos” de la vostra aula.

Criteris de valoració

S‟avaluarà cada exercici d‟acord amb el seu pes, que apareix indicat abans del seu enunciat. Els exercicis que constin de diversos apartats es valoraran com a completament correctes o incorrectes. Les respostes incorrectes no disminueixen la nota. Raoneu i justifiqueu totes les respostes, especialment si així ho indica l‟enunciat (si, tot i demanar-ho l‟enunciat, no justifiqueu la resposta, es comptabilitzarà com a incorrecte).

Format i data de lliurament

Cal lliurar la solució dels exercicis 1..6 i 8 en un fitxer anomenat CognomsNom_FP_PAC2 adreçat a la bústia “Lliurament d‟activitats” de l‟aula de teoria. Cal lliurar la codificació de la pregunta 7 a través del Corrector Automàtic, que trobareu a l‟aula de teoria. Data límit per lliurar la solució: dimecres, 25 de març, 2015 (a les 23:59 hores).

Page 3: Enunciat PAC2 UOC, Fonaments de programació

05.554 · FP · PAC2 · 2014-02 · Estudis d‟Informàtica Multimèdia i Telecomunicació

3

Exercici 1. Declaració d’accions i funcions [10%]

Objectius: Distingir entre accions i funcions. Declarar accions i funcions per a resoldre un problema. Definir els paràmetres, amb els tipus de dades corresponents i els modificadors d’entrada i sortida correctes. Materials: M1 i M2

Tasca: Per a cada apartat, decidiu si és millor una acció o una funció i definiu-ne la capçalera (només es demana la capçalera, no cal que dissenyeu cap algorisme). Es demana la capçalera d’una acció o funció que:

a) Donats quatre reals que representen les coordenades de dos punts al pla retorni la distància entre ells. b) Donats l‟import d‟una hipoteca, el tipus d‟interès que s‟aplicarà i el nombre d‟anys per retornar-la retorni l‟import de cada quota mensual. c) Llegeixi del canal estàndard una seqüència de nombres enters i retorni la seva mitjana i quants nombres tenia la seqüència. d) Donat l‟import pendent de retornar d‟un préstec i l‟import d‟una amortització anticipada actualitzi l‟import pendent i retorni una variable indicant el nombre de quotes que queden pendents.

Page 4: Enunciat PAC2 UOC, Fonaments de programació

05.554 · FP · PAC2 · 2014-02 · Estudis d‟Informàtica Multimèdia i Telecomunicació

4

Exercici 2: Especificació d’accions i funcions [10%]

Objectius: Descriure de manera precisa què fa una funció o acció sense necessitat de saber com ho fa. Materials: M1 i M2

Tasca: Especifiqueu les funcions i/o accions dels apartats a i c de l’exercici 1. Cal que indiqueu la pre-condició i la post-condició.

a) Donats quatre reals que representen les coordenades de dos punts al pla retorni la distància entre ells.

c) Llegeixi del canal estàndard una seqüència de nombres enters i retorni la seva mitjana i quants nombres tenia la seqüència.

Page 5: Enunciat PAC2 UOC, Fonaments de programació

05.554 · FP · PAC2 · 2014-02 · Estudis d‟Informàtica Multimèdia i Telecomunicació

5

Exercici 3: Modificadors d’entrada i sortida [10%]

Objectius: Saber detectar la correctesa en la crida a accions o funcions, entenent el funcionament dels modificadors d’entrada i sortida dels paràmetres. Materials: M1 i M2 Tasca: Donats l’algorisme i les capçaleres de les següents accions i funcions.

tipus t_options = { A, B, C, D, E}; ftipus funcio function1(a: enter): real; funcio function2(): boolea; funcio function3(a: enter, b: real): t_options; accio action1(entsor y: enter); accio action2(ent t: enter, ent y: boolea); accio action3(ent a: enter, ent b: enter, ent t: t_options, sor s: boolea, entsor x: real); algorisme algorithm var a, i : enter; c: caracter; p: t_options; x, y: real; b: boolea; fvar c := „A‟; b := function2(); y := 0.0; x := 1.0; per i := 1 fins 10 fer t := function3(a, y);

action1(y);

fper action2(y, b); falgorisme Responeu a cada apartat si és correcte o no substituir el requadre de l‟algorisme algorithm per la instrucció que es dóna i, si no ho és, indiqueu-ne les causes:

1. action2(realToInteger(function1(i)), function2());

2. b := function2(action1(a));

Page 6: Enunciat PAC2 UOC, Fonaments de programació

05.554 · FP · PAC2 · 2014-02 · Estudis d‟Informàtica Multimèdia i Telecomunicació

6

3. action3(5*a, function1(a), p, function2(),function1(2*a));

4. action1(3.5*x*y);

Page 7: Enunciat PAC2 UOC, Fonaments de programació

05.554 · FP · PAC2 · 2014-02 · Estudis d‟Informàtica Multimèdia i Telecomunicació

7

Exercici 4: Disseny d’algorismes [15%]

Objectius: Entendre un algorisme i saber fer crides a accions i funcions. Materials: M1 i M2 Tasca: Disposem d’un algorisme que ens processa la llista d’estudiants que es volen matricular a una universitat. Per cada estudiant es mira si l’expedient està complert. Si ho està es mira si els estudis l’accepten o no. En cas afirmatiu s’insereix a la llista dels estudis. En cas contrari es treu un llistat dels no acceptats

Nota: En aquest exercici el tipus tString es dona com predefinit.

Ompliu les caixes, amb una única instrucció o expressió a cada una, per aconseguir el comportament que us hem descrit. L‟algorisme resultant ha d‟utilitzar obligatòriament les següents accions i funcions, que no heu d‟implementar:

Funció que donat l‟identificador d‟un estudiant indica si l‟expedient de l‟estudiant està complert o no funcio recordOK(studentId: enter): boolea; Acció que, donat un codi d‟un estudiant, retorni el seu nom i el codi del estudis que vol cursar accio getData(ent studentId: enter, sor name: tString, sor studies: caracter); Funció que, donat el codi d‟un estudiant i els estudis que vol cursar, retorna si és acceptada als estudis o no. funcio isStudentAccepted(studentId: enter, studies.caracter): boolea; Acció que inserta l‟estudiant a la llista dels estudis accio insertStudent (ent studentId: enter,ent studies:caracter); Acció que donat el nom d‟un estudiant i els estudis que volia cursar treu aquestes dades pel canal estàndard accio writeNotAccepted(ent name:tString, ent studies: caracter)

Page 8: Enunciat PAC2 UOC, Fonaments de programació

05.554 · FP · PAC2 · 2014-02 · Estudis d‟Informàtica Multimèdia i Telecomunicació

8

algorisme processStudents const END_SEQ: enter = -1; fconst var studentId: enter; studies: caracter;; name: tString; numStudentsNotAccepted: enter; numRecordsOK: enter; fvar numStudentNotAccepted:= 0;

numRecordsOK:= 0; studentId := readInteger(); mentre studentId ≠ END_SEQ fer si llavors numRecordsOK:= numRecordsOK +1; si llavors

sino numStudentsNotAccepted:= numStudentsNotAccepted +1 fsi fsi studentId := readInteger();

fmentre writeInteger(numStudentsNotAccepted); writeInteger(numRecorsOK) ; falgorisme

;

;

Page 9: Enunciat PAC2 UOC, Fonaments de programació

05.554 · FP · PAC2 · 2014-02 · Estudis d‟Informàtica Multimèdia i Telecomunicació

9

Exercici 5: Disseny d’algorismes [15%]

Objectius: Dissenyar una funció/acció. Materials: M1 i M2 Tasca: Dissenya una acció que donat un import enter d’euros escrigui per el canal estàndard de sortida el número mínim de bitllets i monedes de cada import necessaris per obtenir l’import indicat.

Page 10: Enunciat PAC2 UOC, Fonaments de programació

05.554 · FP · PAC2 · 2014-02 · Estudis d‟Informàtica Multimèdia i Telecomunicació

10

Exercici 6: Seguiment de l’execució [15%]

Objectius: Fer el seguiment, pas a pas, de l’execució d’una funció. Mantenir una taula amb els valors que van prenent els objectes a mida que avança l’execució. Materials: M1 i M2

Tasca: Disposem d‟un algorisme que llegeix nombres enters, tots ells entre 1 i 6 del canal d‟entrada estàndard fins trobar el fi de seqüència indicat amb -1. L‟algorisme llegeix els nombres i els tracta com si fossin tirades d‟un dau simulant el joc de l‟Oca amb dos jugadors. Recordem les regles del joc

Casella Nº de casella Descripció

Oca 5, 9, 14, 18, 23, 27, 32, 36, 41, 45, 50, 54, 59

Si es cau en una Oca s‟avança fins la següent i es torna a tirar.

Pont 6 i 12 Si es cau a una casella de pont, es va a l‟altre pont i es torna a tirar (ambdues direccions)

Fonda 19 Dues jugada sense moure's.

Pou 31 Dues jugades sense moure's.

Laberint 42 Es torna a la casella 39

Presó 52 No es pot moure fins que un altre jugador hi cau i el substitueix (o passen tres torns, segons versions).

La mort 58 Es torna al principi del recorregut.

De moment l‟algorisme implementa una versió simplificada del joc. Té en compte les regles Oca, Pont i Fonda i permet finalitzar sempre que el resultat final sigui més gran o igual a 63. const

END_SEQ: enter = -1; fconst algorisme Oca var

nextMove: enter; turn: enter; winner, keepTurn, readInput: boolea; cell1, cell2: enter; numTurnsOut1, numTurnsOut2: enter;

fvar

Page 11: Enunciat PAC2 UOC, Fonaments de programació

05.554 · FP · PAC2 · 2014-02 · Estudis d‟Informàtica Multimèdia i Telecomunicació

11

turn:= 1; winner:=fals; cell1:=0; cell2:=0; numTurnsOut1:= 0; numTurnsOut2:= 0; readInput:= cert; keepTurn:= fals; nextMove:=readInteger(); mentre (nextMove ≠ END_SEQ i winner=fals) fer

si turn = 1 llavors si numTurnsOut1 > 0 llavors numTurnsOut1 := numTurnsOut1 -1; readInput:=fals; sino

cell1:= cell1 + nextMove; checkTurn(keepTurn, cell1, numTurnsOut1, winner); readInput:=cert; fsi sino si numTurnsOut2 > 0 llavors numTurnsOut2 := numTurnsOut2 - 1; readInput:=fals; sino

cell2:= cell2 + nextMove; checkTurn(keepTurn, cell2, numTurnsOut2, winner); readInput:=cert; fsi fsi si readInput llavors

nextMove:=readInteger(); fsi si (keepTurn= fals) llavors si turn = 1 llavors turn := 2 ; sino turn :=1 ; fsi fsi

fmentre si winner llavors si turn = 1 llavors writeInteger(1) ; else writeInteger(2) ; fsi sino writeChar(„N‟); fsi falgorisme

Page 12: Enunciat PAC2 UOC, Fonaments de programació

05.554 · FP · PAC2 · 2014-02 · Estudis d‟Informàtica Multimèdia i Telecomunicació

12

accio checkTurn( sor keepTurn: boolea, entsor cell : enter,

entsor numTurnsWait:enter, entsor winner: boolea )

keepTurn:=fals; winner:=fals; si (cell mod 9 = 0) llavors

cell := cell + 5; keepTurn := cert;

sino si (cell mod 9 = 5) llavors cell := cell + 4; keepTurn := cert;

sino si cell = 6 llavors cell:=12; keepTurn:= cert; sino si cell = 12 llavors cell:= 6; keepTurn:= cert; sino si cell = 19 llavors numTurnsWait:=2; sino si cell > 63 llavors winner:= cert; keepTurn :=cert fsi fsi fsi fsi fsi fsi

faccio

Suposant que la seqüència d‟entrada és <1 5 3 5 3 6 1 4 2 -1>, quin seran els valors de les variables cell1 i cell2 en acabar l‟algorisme? Completa la taula amb la informació de cada jugada

jugador Punts jugada Posició final Acció

1 1 1 Canvi jugador

2 5 5 Oca

Page 13: Enunciat PAC2 UOC, Fonaments de programació

05.554 · FP · PAC2 · 2014-02 · Estudis d‟Informàtica Multimèdia i Telecomunicació

13

A la condició nextMove ≠ END_SEQ i winner=fals què garanteix la part winner=fals?

Page 14: Enunciat PAC2 UOC, Fonaments de programació

05.554 · FP · PAC2 · 2014-02 · Estudis d‟Informàtica Multimèdia i Telecomunicació

14

Exercici 7: Codificació [15%]

Objectius: Codificar un algorisme en llenguatge C. Fer proves per a veure si el funcionament és correcte. Materials: Manual de C, Guia d’estil de programació en C i Taules de conversió. Tasca: Codifiqueu en llenguatge C, compileu i proveu l’ algorisme de l’exercici 6.

Page 15: Enunciat PAC2 UOC, Fonaments de programació

05.554 · FP · PAC2 · 2014-02 · Estudis d‟Informàtica Multimèdia i Telecomunicació

15

Exercici 8: Codificació [10%]

Objectius: Comprensió d’algorismes en C. Materials: Manual de C, Guia d’estil de programació en C i Taules de conversió.

L‟algorisme de l‟exercici anterior no té en compte totes les regles del joc de la Oca. Tasca 1: Modifiqueu l‟acció que calcula quina acció cal fer segons la cel·la per què només acabi el joc en cas de que la fitxa arribi exactament a la casella 63. Recordeu que si no s‟acaba en el 63 cal tirar la fitxa enrere. Ex. Si la fitxa està a la casella 60 i la tirada és 5 la fitxa acaba en 61. Tasca 2: Modifiqueu l‟algorisme per que tracti tres jugadors. Contesteu en C.