examen programació Gener_2014

6

Click here to load reader

description

examen programació Gener_2014

Transcript of examen programació Gener_2014

  • Examen 2013/14-1 Assignatura Codi Data Hora inici Programaci 06.505 15/01/2014 18:30

    Pgina 1 de 6

    06.505 15 01 14 EX

    Enganxeu en aquest espai una etiqueta identificativa

    amb el vostre codi personal Examen

    Fitxa tcnica de l'examen Comprova que el codi i el nom de lassignatura corresponen a lassignatura en la qual ests

    matriculat.

    Noms has denganxar una etiqueta destudiant a lespai corresponent daquest full.

    No es poden adjuntar fulls addicionals.

    No es pot realitzar la prova en llapis ni en retolador gruixut.

    Temps total: 2 h.

    En cas que els estudiants puguin consultar algun material durant lexamen, quin o quins

    materials poden consultar?

    Cap

    Valor de cada pregunta: Pregunta 1 [30%], Pregunta 2 [30%] i Pregunta 3 [40%]

    En cas que hi hagi preguntes tipus test: Descompten les respostes errnies? NO Quant?

    Indicacions especfiques per a la realitzaci daquest examen:

    Enunciats

    Espai grapa

  • Examen 2013/14-1 Assignatura Codi Data Hora inici Programaci 06.505 15/01/2014 18:30

    Pgina 2 de 6

    Pregunta 1 [30%] Un despatx dadvocats, de cara a la facturaci de minutes, anota en la fitxa electrnica de cada client la dedicaci al seu expedient que hi dedica cada membre del despatx. La fitxa electrnica genera una seqncia del tipus

    {M1 t1 M2 t2 .... Mn tn -1} on

    Mi s el codi de la persona que ha dedicat temps a lexpedient del client. Els codis es distribueixen de la segent forma:

    o Entre 1 al 10 corresponen als socis

    o Entre 11 al 100 corresponen als advocats

    o A partir del 101 corresponen a passants

    ti s el temps, expressat en minuts, dedicat a lexpedient

    -1 s el nmero -1 que indica la fi de la seqncia electrnica El temps de cada membre del despatx t diferent valoraci:

    Soci: 550 / hora Advocat: 150 / hora Passant: 50 /hora

    Es demana construir el mdul computeBill (acci o funci) que llegeixi la seqncia electrnica de lentrada estndard i retorni el total de la factura. Sha de justificar la tria del tipus de mdul.

    Es tracta duna funci perqu retorna un nic valor. funci computeBill(): real const minutePartner: real = 550.0/60.0; minuteAttorney: real = 150.0/60.0; minuteIntern: real = 50.0/60.0; fconst var member, minutes: enter; total, minuteValue: real; fvar total := 0.0; member := readInteger();

  • Examen 2013/14-1 Assignatura Codi Data Hora inici Programaci 06.505 15/01/2014 18:30

    Pgina 3 de 6

    mentre (member > 0) fer minutes := readInteger(); si (member>100) llavors minuteValue := minuteIntern; sino si (member >10) llavors minuteValue := minuteAttorney; sino minuteValue := minutePartner; fsi fsi total := total + integerToReal(minutes)*minuteValue; member := readInteger(); fmentre retornar total faccio

  • Examen 2013/14-1 Assignatura Codi Data Hora inici Programaci 06.505 15/01/2014 18:30

    Pgina 4 de 6

    Pregunta 2 [30%] Per dissenyar un joc descacs per ordinador sopta per representar el tauler mitjanant una taula de taules del tipus tauler que sha definit:

    tipus row : taula [8] de enter chessboard: taula [8] de row; ftipus var tauler: chessboard; fvar

    A cada posici de tauler es posa un nmero amb els segents significats: 0 casella buida 1 pe 2 torre 3 cavall 4 alfil 5 reina 6 rey

    Les peces blanques tenen valors positius mentre que les negres tenen els mateixos valors per negatius. Es demana construir el mdul fullChessboard que rebi una variable del tipus chessboard y ens digui si sobre el Tauler hi ha el mxim de fitxes de cada bndol. Sha de justificar la tria del tipus de mdul:

    Es tractar duna funci perqu retornar un valor cert o fals funci fullChessboard (t: chessboard): boole var i, j, ocupat: enter; fvar ocupat := 0; per i := 1 fins 8 fer per j := 1 fins 8 fer si t[i][j] 0 llavors ocupat := ocupat + 1; fsi fper fper retornar (ocupat = 32); ffuncio

  • Examen 2013/14-1 Assignatura Codi Data Hora inici Programaci 06.505 15/01/2014 18:30

    Pgina 5 de 6

    Pregunta 3 [40%] Un laboratori de recerca psicolgica esta fent un estudi de les ludopaties, amb motiu del qual tenen previst fer una enquesta a 10000 persones que assisteixen a casinos. Sha de crear una data estructurada candidate capa demmagatzemar les dades duna enquesta

    Sexe de lenquestat (M o F) Edat de lenquestat Freqncia de joc (quants cops al mes van al casino) Els tres jocs preferits posats per ordre (R ruleta, P Pquer, B Black Jack, H

    Hazzard, 'J' -> Jackpot, M -> mquines escurabutxaques, 'L'-> Loto) La quantitat de diners aproximada que destinen al joc cada mes

    Dissenyeu la dada estructurada candidate

    tipus candidate = tupla sex : caracter; age, freq : enter; money : real; favorite : taula [3] de caracter; ftupla ftipus

    Per emmagatzemar la totalitat de fitxes s'ha creat una nova dada estructurada que permet mantenir les dades de fins les 10000 enquestes.

    surveySet = tupla qtty : integer; survey: taula [10000] de candidate; ftupla

    La quantitat d'enquestes que en cada moment estaran emmagatzemades, ve indicada pel camp qtty, i les dades de les enquestes ocupen sempre les primeres qtty posicions de la taula survey. Tamb s'ha creat la variable researchData del tipus surveySet que s on s'han carregat les dades de les enquestes ja realitzades.

    Escriviu l'expressi que comprova si Jackpot s el joc ms preferit del darrer jugador incorporat a researchData

    researchData.survey[researchData.qtty].favorite[1]='J'

  • Examen 2013/14-1 Assignatura Codi Data Hora inici Programaci 06.505 15/01/2014 18:30

    Pgina 6 de 6

    Creeu el mdul (acci o funci, el ms adequat) que rebi researchData i retorni la despesa mensual mitjana dels jugadors incorporats a la dada estructurada. S'ha de justificar la tria de tipus de mdul realitzada

    Funci perqu retorna un nic valor. funci moneyAverage(data: surveySet): real var qtty, i: enter; total: real; fvar total := 0; qtty := data.qtty; per i:=1 fins qtty fer total := total + data.survey[i].money; fper retorna total/enterAReal(qtty); ffuncio