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 - Multimedia (UOC) - Paquita Ribas

4,355 views

Published on

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

Published in: Education
  • Be the first to comment

Programació - PAC 1 - Multimedia (UOC) - Paquita Ribas

  1. 1. Estudis d’Informàtica, Multimèdia i TelecomunicacióProgramacióPAC1 — Primera Prova dAvaluació ContinuadaCognoms: Ribas TurNom: PaquitaIndicacions 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) )enter div realToInteger(real*integerToReal(3*enter))enter div realToInteger(real*integerToReal(enter))enter div realToInteger(real*real)enter div realToInteger(real)enter div enterenterii) islt = fals i c = C o c=cÉs un booleà, perquè té i com operador intern i valor fals.iii) integerToReal(x mod charToInteger(c))/CONSTAintegerToReal(enter mod charToInteger(caràcter))/10.0integerToReal(enter mod enter)/realintegerToReal(enter)/realreal/realreal 2
  3. 3. iv) realToInteger(r) > x o junior > seniorÉs un booleà perquè té o com operador i els valors cert o fals. 3
  4. 4. 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. percentatge:= (x/y)*100 b) Expressió que ens doni un real, calculat a partir de dividir x entre y, fer-li el quadrat i multiplicar-lo per z. x, y, z: enter { Pre: x=X i y=Y i z=Z} expressioReal:= ((x/Y) 2 * Z) { Post: ((X/Y)2)*Z=real} 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. (x mod y =0) 4
  5. 5. 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 3660 b) x*y mod realToInteger (r/CONSTA) + charToInteger (0) 2 * 10 mod realToInteger (30.5/10.0) + charToInteger (‘0’) /*He calculat primerament el que està dintre del parèntesi*/ 2 * 10 mod realToInteger (3,05) + charToInteger (‘0’) /*He calculat en segon lloc el canvi de tipus*/ 2 * 10 mod 3 + 0 /*He calculat el producte*/ 20 mod 3 2 c) cat < vetera i CONSTA = r vetera < veterà i 10.0 = 30.5 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))) /*He calculat primerament el que està dintre dels parèntesi*/ 2 * 20 div (30 * 2 div (12 div 6)) 5
  6. 6. /*He calculat en segon lloc el canvi de signe*/ 2 * 20 div (30 * 2 div 2)/*He calculat el producte*/ 40 div (60 div 2) 40 div 30 1 6
  7. 7. 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)) No és correcte, ja que c és un caràcter, x és un enter. Amb charToInteger(c) passem de caràcter a enter. Si sumem enter + enter no pot donar un caràcter. b) (r * CONSTA) div realToInteger(x) No és correcte. L’argument realToInteger(x) ja és un enter. L’expressió hauria de ser: (r * CONSTA) div integerToReal(x) c) 2 * x + 5 = 0 > isIt És correcte: Si fem les operacions, primer aniria *, després la suma, després l’igual i finalment els símbols > <. d) realToInteger(integerToReal(y*y)/r) + 2 És correcte, ja que: realToInteger(integerToReal(enter*enter)/real) + enter realToInteger(integerToReal (enter)/real) + enter realToInteger(real/real) + enter realToInteger(real) + enter enter + enter enter 7
  8. 8. e) IntegerToChar (charToInteger( IntegerToChar( CONSTA ) ) ) = ‘C’ No és correcte, ja que: IntegerToChar (charToInteger (IntegerToChar(real))) = caràcter IntegerToChar (charToInteger (aquí està incorrecte, ja que CONSTA és real, no enter)... L’expressió hauria de ser: IntegerToChar (charToInteger (realToChar(real))) = caràcter IntegerToChar (charToInteger (caràcter)) = caràcter IntegerToChar (enter) = caràcter caràcter = caracterf) (y>= 2 o x = 0) i (cat = absoluta) No és correcte, “absoluta” no és cap del tipus enumerats en category. L’expressió està escrita incorrectament. Seria correcte: (y ≥ 2 o x = 0) i (cat = absolute) 8
  9. 9. 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: L’ordinador està connectat al corrent i a la impressora, amb el document desanten el disc dur. L’ordinador funciona perfectament i té instal·lat el programa adequat pera obrir el document que volem imprimir. L’ordinador té la impressora ben configurada.La impressora està connectada al corrent i a l’ordinador. Té prou tinta per a imprimir eldocument i té suficient paper en la safata d’alimentació de paper. La llum elèctricafunciona perfectament.} Encendre l’ordinador Encendre la impressora Seleccionar el document de la llista dels documents que tenim dintre l’ordinador Obrir-lo amb el programa adequat Seleccionar l’opció d’imprimir des del programa Comprovar les propietats d’impressió Polsar definitivament el botó d’imprimir{ Post: El document que teníem desat dintre de l’ordinador s’ha imprès.} 9
  10. 10. 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ó.x, y: realmA, mG, dAG: real{ Pre: x=X i y =Y i X;Y >0 }mitjanaAritmetica //calcular la mitjana aritmèticamitjanaGeometrica //calcular la mitjana geomètricadiferenciaAritmeticaGeometrica:= mitjanaAritmetica - mitjanaGeometrica{ Post: mA=X+Y/2 i mG=√2 (X*Y) i dAG= mA-mG} 10
  11. 11. 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 LOW < HIGH fer si LOW mod 5 = 0 llavors x := x + 1; fsi LOW = LOW + 1 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 11
  12. 12. 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. per i := LOW fins HIGH si i mod 5 = 0 llavors x := x + 1 fsi fper 12
  13. 13. 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 13
  14. 14. writeInteger(m); {Post: m és el màxim valor dels enters llegits }falgorisme<?php$cadena = $_GET ["cadena"];$high = $_GET["high"];$numeros =explode ( , $cadena);// Pre: CERTif ($high > 0) { $m = array_shift($numeros); $i = 1; while ($i < $high) { $n = array_shift($numeros); if ($n > $m) { $m = $n; }; $i = $i + 1; };} else { $m = 0;};// escrivim els resultatsprint "$high números entrats: $cadena <br />";print "Major valor: $m <br />";//Post: m és el màxim valor dels enters llegits?> 14
  15. 15. 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<?php$numero = $_GET ["numero"];if ($numero <1 or $numero>10) { print "El valor ha destar comprès entre 1 i 10 <br />";} else { for ($i = 1; $i <= $numero; $i++) { print "TAULA DEL $i <br />"; for ($j = 1; $j <= 10; $j++) { $producte = $i * $j; print "$i x $j = $producte <br />"; }; print "<br />"; }};?> 15

×