Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Programació - PAC 1 correcció - Multimèdia (UOC) - Paquita Ribas

5,262 views

Published on

Correcció de la PAC 1 de l'assignatura de Programació del Grau Multimèdia de la UOC. Per a descarregar els arxius de PHP, visita la meva wiki: http://raco-vermell.wikispaces.com/PROGRAMACI%C3%93

  • Be the first to comment

  • Be the first to like this

Programació - PAC 1 correcció - Multimèdia (UOC) - Paquita Ribas

  1. 1. Estudis d’Informàtica, Multimèdia i TelecomunicacióProgramacióPAC1 — Primera Prova dAvaluació ContinuadaCognoms: Escriu aquí els teus cognomsNom: Escriu aquí el teu nomIndicacions generals:Raoneu i justifiqueu totes les respostes.Les respostes incorrectes no disminueixen la nota.Per a dubtes i aclariments sobre l’enunciat, adreceu-vos al consultor responsable de lavostra aula.Lliurament:1. Sha de respondre les preguntes al mateix document de lenunciat que rebrà el nom CognomsNomP_PAC1.doc (o CognomsNomP_PAC1.odt)2. Sha denviar la codificació de les preguntes 9 i 10 mitjançant els arxius PAC1_Exer09.php PAC1_Exer10.php que es construiran sobre les plantilles adjunta. És especialment important respectar el nom daquests arxius php.3. Els tres fitxers es comprimiran en un únic arxiu de format zip o rar de nom CognomsNomP_PAC1.zip (o CognomsNomP_PAC1.rar) que es lliurarà a la bústia de "Lliurament i registre dAC"4. Data límit per lliurar la solució: dia, 17 doctubre de 2011 (a les 23:59 hores).És imprescindible respectar el format i data d’entrega. La no adequació aaquestes especificacions pot suposar la no avaluació de la PAC. 1
  2. 2. Exercici 1: Identificació de tipus [10%]Objectius: Mostrar coneixements elementals sobre els tipus, com manipular-los iidentificar els tipus resultants d’efectuar operacions entre objectes elementals delllenguatge algorísmic.Materials: M1 i M2 fins M2.1Tasca: Donades les següents definicions de tipus, constants i variablestipus category = {junior, senior, veteran, master, absolute};ftipusconst CONSTA: real = 10.0;fconstvar c: caracter; isIt: boolea; cat: category; x, y, z: enter; r: real;fvarindiqueu quin es el tipus resultant d’avaluar les expressions següents (recordeu queloperador = és de relació):i) x div realToInteger(r*integerToReal(3*x) ) El resultat és de tipus enter.ii) islt = fals i c = C o c=c El resultat és de tipus booleà.iii) integerToReal(x mod charToInteger(c))/CONSTA El resultat és de tipus real.iv) realToInteger(r) > x o junior > senior El resultat és de tipus booleà. 2
  3. 3. Exercici 2: Sintaxi d’expressions [10%]Objectius: Mostrar l’habilitat en la confecció d’expressions en llenguatge algorísmic.Utilització apropiada d’objectes elementals del llenguatge algorísmic per a la confeccióde les expressions donades unes declaracions prèvies d’objectes elementals.Materials: M1 i M2 fins M2.1Tasca: Donades les definicions de tipus, constants i variables de l’exercici 1, escriviu,en llenguatge algorísmic, les expressions següents: a) Expressió que calculi el percentatge, en tant per cent, de x respecte d’y. 100.0 * integerToReal(x) / integerToReal(y) b) Expressió que ens doni un real, calculat a partir de dividir x entre y, fer-li el quadrat i multiplicar-lo per z. integerToReal( (x div y) * (x div y) * z) c) Expressió que determini si el valor de cat es junior o senior. cat = junior o cat = senior d) Expressió que determini si x és múltiple d’y. y mod x = 0 3
  4. 4. Exercici 3: Avaluació d’expressions [10%]Objectius: Mostrar l’habilitat en la manipulació d’expressions en llenguatge algorísmic.Donades unes declaracions prèvies d’objectes elementals, saber explicar-ne comefectuar la seva avaluació i donar-ne el resultat correcte.Materials: M1 i M2 fins M2.1Tasca: Donades les definicions de tipus i variables de l’exercici 1 i suposant que lesvariables tenen els valors següents: x:= 2; y:= 10; cat := vetera; c := 5; r := 30.5;Calculeu el resultat de les expressions següents: a) integerToReal (x) * r * 60.0 integerToReal(2) * 30.5 * 60.0 2.0 * 30.5 * 60.0 61.0 * 60.0 3660.0 b) x*y mod realToInteger (r/CONSTA) + charToInteger (0) 2 * 10 mod realToInteger( 30.5 / 10.0 ) + charToInteger(‘0’) 20 mod realToInteger( 3.05 ) + 48 20 mod 3 + 48 2 + 48 50 c) cat < vetera i CONSTA = r vetera < vetera i 10.0 = 30.5 fals i fals fals d) (x mod y) * 20 div (realToInteger(r) * 2 div ((y+2) div (x+4))) (2 mod 10) * 20 div (realToInteger(30.5) * 2 div ((10+2) div (2+4))) 2 * 20 div (30 * 2 div (12 div 6) ) 40 div (60 div 2) 40 div 30 1 4
  5. 5. Exercici 4: Correctesa d’expressions [10%]Objectius: Mostrar l’habilitat en la manipulació d’expressions en llenguatge algorísmic.Donades unes declaracions prèvies d’objectes elementals, raonar la correctesa del’expressió, argumentant els motius d’incorrecció si n’hi ha.Materials: M1 i M2 fins M2.1Tasca: Donades les definicions de tipus, constants i variables de l’exercici 1, digueu sisón correctes o no les expressions següents, independentment del que pretenguincalcular. En cas que no ho siguin, especifiqueu-ne la raó o raons. a) (cat > junior) i ((c = 0) o (charToInteger(c) + x = c)) Incorrecta. No es pot comparar un enter amb un caràcter. b) (r * CONSTA) div realToInteger(x) Incorrecta. div és una operació exclusiva denters i un enter no pot ser argument de la funció realToInteger. c) 2 * x + 5 = 0 > isIt Correcta. d) realToInteger(integerToReal(y*y)/r) + 2 Correcta. e) IntegerToChar (charToInteger( IntegerToChar( CONSTA ) ) ) = ‘C’ Incorrecta. Un real no pot ser argument de la funció IntegerToChar. f) (y>= 2 o x = 0) i (cat = absoluta) Incorrecta. No hi ha cap valor possible del tipus category que sigui absoluta. El valor correcte de category és absolute 5
  6. 6. Exercici 5: Algorisme en llenguatge natural i especificacions [10%]Objectius:Descriure un algorisme en paraules (llenguatge natural) i donar lesespecificacions (pre i postcondicions). Tan sols es pretén detectar l’habilitat enidentificar els continguts dels diferents elements així com mostrar un coneixementbàsic de l’algorisme descrit.Materials: M1 i M2 fins M2.2Tasca: Descriviu i especifiqueu l’algorisme a seguir per tal imprimir un document queteniu desat en el disc dur de l’ordinador (evidentment no hi haurà solució única. Podeusuposar que teniu la impressora ben configurada, i que la teniu connectada al’ordinador){ PRE: Tenim un document al disc dur de l’ordinador, l’ordinador iniciat i la impressoraconnectada i configurada correctament }  Obrir l’explorador de fitxers propi del nostre sistema operatiu  Navegar per l’estructura de carpetes fins localitzar el fitxer a imprimir  Si el fitxer té associada una aplicació predeterminada fer doble-clic per llançar-la  Si el fitxer no té associada una aplicació, escollir-ne una a partir del menu contextual que apareix clicant amb el botó dret.  Un cop oberta l’aplicació i mostrat el contingut del fitxer, cercar l’opció ”Imprimir..”, habitualment sota el menú “Arxiu”  Seleccionar les preferències d’impressió: orientació de pàgina, nombre de pàgines, nombre de còpies, fulls per pàgina, escalat, tipus de paper, etc.  Clicar sobre el botó d’acceptar per enviar a impressora  Esperar a què la impressora acabi de processar la tasca d’impressió{ POST: El document ha estat imprès i els papers impressos estàn llestos per recollir-los ala safata de la impressora } 6
  7. 7. Exercici 6: Declaració de variables i especificació [10%]Objectius: Donada la descripció d’un problema, declarar les variables necessàries idonar les especificacions (les precondicions i els postcondicions) de l’algorisme.Materials: M1 i M2 fins M2.2Tasca: Declareu les variables necessàries i doneu les especificacions d’un algorismeque resolgui el problema següent (no sha descriure lalgorisme):“Donats dos valors numèrics reals i majors que zero, determineu la deferència entre lamitjana aritmètica i la mitjana geomètrica.”En concret, es demana que definiu les variables necessàries per representar les dadesdel problema (apartat var…fvar d’un algorisme) i que doneu la precondició i lapostcondició.var x, y : realfvar{ PRE: x = X i y = Y i X > 0.0 i Y > 0.0 } DiferenciaDeMitjanes{ POST: si (X + Y) / 2.0) > √(X * Y) retorna((X + Y) / 2.0) –√(X * Y), altrament retorna √(X * Y) – ((X + Y) / 2.0) } 7
  8. 8. Exercici 7: Comprensió d’algorismes [10%]Objectius: Avaluar coneixements bàsics d’algorísmica. Estructura general d’unalgorisme i l’ús d’estructures algorísmiques bàsiques. Es plantegen preguntesd’interpretació donat un algorisme en llenguatge algorísmic.Materials: M1 i M2 fins M2.3Tasca: Donat el següent algorisme, algorisme nameAlgorithm var low, high, x : enter; fvar {Pre: a l’entrada estàndard hi ha dos nombres enters LOW i HIGH} low:=readInteger(); high:=readInteger(); x:= 0; mentre fer si llavors x := x + 1; fsi fmentre writeInteger(x); {Post: Calcula i escriu per pantalla x, que és el nombre de múltiples de 5 que hi ha entre el LOW i HIGH ambdós inclosos } falgorisme Completeu les parts que falten Opció 1 Opció 2 1er requadre: low <= high 1er requadre: low <= high 2n requadre: low mod 5 = 0 2n requadre: high mod 5 = 0 3r requadre: low := low + 1; 3r requadre: high :=high - 1; 8
  9. 9. Exercici 8: Modificació del comportament d’un algorisme [10%]Objectius: Avaluar coneixements bàsics d’algorísmica. L’avaluació va un pas mésenllà de l’interpretació bàsica en plantejar modificacions del mateix. Es demanenmodificacions al comportament d’un algorisme ja donat per tal de que aquest puguicontemplar situacions diferents.Materials: M1 i M2 fins M2.3Tasca: Considerant l’algorisme de l’exercici 7, modifiqueu-lo emprant la composicióper...fper i feu que escrigui per pantalla els múltiples de 5 que hi ha entre el low i high. algorisme nameAlgorithm var low, high, i : enter; fvar {Pre: a l’entrada estàndard hi ha dos nombres enters LOW i HIGH} low:=readInteger(); high:=readInteger(); per i:= low fins high fer si i mod 5 = 0 llavors writeInteger(i); fsi fper {Post: Calcula i escriu per pantalla x, que és el nombre de múltiples de 5 que hi ha entre el LOW i HIGH} falgorisme 9
  10. 10. Exercici 9: Codificació [10%]Objectius: Donat un llistat en llenguatge algorísmic, traduir-lo a PHP. Treballar lesassignacions i comparacions, que en PHP requereixen utilitzar adientment el = i el ==.També treballar la recollida de seqüències de dades.Materials: M1 i M2 fins M2.3Tasca: L’algorisme següent va llegint els valors que entren per l’entrada estàndard (elnúmero de valors que cal llegir se sap a priori mitjançant el valor que s’assigna llegintpel canal estàndard d’entrada a la variable high) i troba el que és el més gran de totsells. Codifica’l en llenguatge PHP.Lentrada de dades shaurà de realitzar pel mètode $_GET de manera que funcioniamb una crida del tipus: PAC1_exer9.php?cadena=3 4 5 8 4 2 1 18 12&high=9Per tal dobtenir de la cadena $string un a un els números que la formen, on sha fetservir com separador el caracter $c, podeu emprar consecutivament:  $var1 = explode ($c, $string);1  $var2 = array_shift($var1);2Podeu observar i veure com funciona larxiu example.php que sadjunta a lenunciat.La crida és del tipus example.php?cadena=5,6,7,8,91,2,3,4,5,5,676767,78,8,89 i faservir com separador una coma.algorisme greaterNumber; var n, m, i, high: enter; fvar {Pre: CERT } high:=readInteger(); si high > 0 llavors m:=readInteger(); i:=1; mentre( i < high ) fer n:=readInteger(); si ( n > m ) llavors m:= n; fsi i :=i +1; fmentre sino m := 0 fsi1 http://es2.php.net/manual/es/function.explode.php2 http://es2.php.net/manual/es/function.array-shift.php 10
  11. 11. writeInteger(m); {Post: m és el màxim valor dels enters llegits }falgorisme<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//ES""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html lang="ES" dir="ltr" xmlns="http://www.w3.org/1999/xhtml"><head><title>PAC1_Exer9</title></head><body><h3>PAC1_Exer9</h3><h3>***** NOM DE LESTUDIANT ******</h3> <!-- No oblideu posar el nom --><div><?php /* Llegeix de la crida dues variables cadena: que conté una quantitat indefinida de números high: un número que és la quantitat de números que conté cadena Després de la lectura escriu el major de tots els números que estaven en cadena exercici 9 - PAC1 - setembre-2011 gener 2012 autor:*/ /* get quantity of numbers */ $high = $_GET["high"]; print "<H3> Es llegiran $high números per cercar el més gran dells <H3> <br />"; if ($high > 0) { $cadena = $_GET["cadena"]; $numeros = explode( , $cadena); $m = array_shift($numeros); print "Els números entrats són: <br />$m "; $i = 1; /* search max of sequence */ while ( $i < $high ) { $n = array_shift($numeros); print "$n "; if ($n > $m) $m = $n; $i++; }}else $m = 0;/* print results */print "<br />El més gran de tots és $m";?></div></body></html> 11
  12. 12. Exercici 10: Bucles i PHP [10%]Objectius: Avaluar coneixements d’algorísmica posant èmfasi en les composicionsiteratives. Es demana construir un programa en què el seu nucli està format per buclesMaterials: M1 i M2 fins M2.3Tasca: Tothom coneix les taules de multiplicar fins el 10 i sap recitar-les duna tirada.Dissenyeu un programa que rebi un valor en la variable $numero i escrigui les taulesde multiplicar fins la de $numero. Si el valor rebut és inferior a 1 o superior a 10,donarà lavís "El valor a entrar ha destar comprès estre 1 i 10".Lentrada de dades shaurà de realitzar pel mètode $_GET de manera que funcioniamb una crida del tipus: PAC1_exer10.php?numero=4<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//ES""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html lang="ES" dir="ltr" xmlns="http://www.w3.org/1999/xhtml"><head><title>PAC1_Exer10</title></head><body><h3>PAC1_Exer10</h3><h3>***** NOM DE LESTUDIANT ******</h3> <!-- No oblideu posar el nom --><div><?php /* rep un valor en la variable $numero i escrigui les taules de multiplicar fins la de $numero. Si el valor rebut és inferior a 1 o superior a 10, donarà lavís "El valor a entrar ha destar comprès estre 1 i 10". exercici 10 - PAC1 - setembre-2011 - gener 2012 autor:*/ $numero = $_GET["numero"]; if (($numero < 1) || ($numero >10)) { print "El valor a entrar ha destar comprès estre 1 i 10"; } else { $multiplier = 1; while ($multiplier <= $numero) { print "<br /> <h3>TAULA DEL $multiplier</h3) <br />"; for ($i=1; $i<11; $i++) { $product = $multiplier * $i; print "<br >$multiplier * $i = $product "; } $multiplier++; } }?></div></body></html> 12

×