PAC2_PA
description
Transcript of PAC2_PA
Nom
Estudis dInformtica, Multimdia i Telecomunicaci Programaci
PAC2 Document dexercicisEstudiant
Cognoms: Villarreal QuintanaNom: JaumeExercici 1: Declaraci d'accions i funcions [15%]
Tasca: Per a cada apartat, decidiu si s millor una acci o una funci i definiu-ne la capalera (noms es demana la capalera, no cal que dissenyeu cap algorisme). Es demana la capalera d'un mdul (acci o funci) que:a) Que rebi un nmero de telfon i digui si est assignat o no a algun usuari i el nom del propietari:
acci phone (ent tlfn: enter, sor name: cadena, sor msg: boolea)b) Que reculli de l'entrada estndard 10 paraules una rera laltre i digui si les han entrat per ordre alfabticfunci alphabeticOrder (): boolec) Donades dues cadenes digui si la segona est continguda en la primera i quants de cops apareixacci repeatString (ent string1: cadena, ent string2: cadena, sor repeat: enter, sor: msg: boole)d) Que rebi limport dun lloguer a actualitzar i lIPC i actualitzi el preu del lloguer. acci setup (ent amount: real, ent IPC: real) Exercici 2: Crides a mduls i modificadors d'entrada i sortida [15%]
Tasca: Donats lalgorisme i les capaleres de les segents accions i funcions:funcio function1( x: enter, y: enter, z: enter) : boolea;
funcio function2( x: enter, c: caracter, b: boolea) :enter;accio action1( sor x: enter, ent z: enter) ;
accio action2( ent c: caracter, ent x: enter, entsor y: enter);
algorisme algorithm
var
i, j, k: enter;
x, y, z : real;
d : caracter;
b: boolea;
fvar
...
...
falgorismeResponeu a cada apartat si s correcte o no substituir el requadre gris de lalgorisme algorithm per la instrucci que es dna i, si no ho s, indiqueu-ne les causesa) action1 (k, function2( 7, x, function1(x, y, z ));INCORRECTA.Els parmetres que es passen a function1 corresponen a variables de tipus real, quan els parmetres formals de la funci declarada sn de tipus enter.
b) k := action2( d, function2 ( i, A, cert), j);INCORRECTA.
La invocaci d'una acci sempre es fa fora d'una expressi. Seria correcte:
action2( d, function2 ( i, A, cert), j);c) b := function1( j, function2( k, d, function1(5, 7, 12)), 3*k);CORRECTA.Exercici 3: s de mduls i parmetres segons el seu significat i [15%]
Tasca: Desprs duns anys dhaver construt un aeroport i no posar-lo en funcionament, la companyia Escocesa AllInAir ha decidit comprar-lo com a seu exclusiva dels seus avions i des don fa un vol diari danada i tornada a cadascuna de les seves 22 destinacions. Per als mostradors de laeroport (nic lloc on es venen bitllets) ha creat el programa que facilita lemissi de bitllets que shan de pagar al moment amb targeta.Ompliu les caixes, amb una nica instrucci o expressi a cada una, per aconseguir el comportament que us hem descrit. Lalgorisme resultant ha dutilitzar obligatriament les segents accions i funcions, que no heu dimplementar:
Acci que llegeix del canal dentrada la destinaci, la data de viatge (dd-mm-aaaa) i el nom del viatger:
accio getFlightInfo (sor destination: cadena, sor date:cadena,
sor traveller: cadena);Acci que llegeix del TPV el nmero de targeta de crdit i el PIN i diu si el PIN correspon a la targeta:
accio getCreditCardInfo (sor number: enter, sor PIN: enter, sor OK: boolea);Funci que rep la destinaci i retorna el codi del vol funcio getFlightCode ( location: cadena): cadenaFunci que rep un import i les dades duna targeta i retorna cert si sha pogut carregar limport a la targeta:
funcio payOK (amount: real, creditCarNumber: enter, PIN: enter): boolea;
Acci que rep el codi del vol i la data i diu si hi ha o no places i el preu de la plaa vacant acci vacancyCost ( ent code: cadena, ent date: cadena, sor vacancy: boolea, sor amount: real);
Acci que donades les dades del bitllet (codi del vol,data, nom del viatger i preu) escriu la targeta dembarcament i el bitllet:
accio writeBoardingPass (ent code: cadena, ent date:cadena, ent traveller:cadena, ent amount: real );
algorisme AllInAirAirportvar
cityTo, date, travellerData, fligthCode: cadena;
creditCardNum, PIN : enter;
travelAmount: real;
OKSeat, OKCredit, OKPay: boolea;
fvar{llegeix del canal estndard la informaci de fitxer de vol i viatger}
;
{obt el codi del vol}
fligthCode:= ;
{mira si hi ha vacants a la data de vol i el preu en qesti}
;si OKSeat llavors{obt les dades de la targeta de crdit de lusuari}
;
si OKCredit llavors
{intenta fer el cobrament del bitllet}
OKPay := ;
si OKPay llavors
{ genera bitllet i targeta
;
sino
writeString (Pagament no acceptat),
fsi
sino
writeString (PIN incorrecte);
fsi
sino
writeString (No hi ha vacants per aquest vol);
fsi
falgorisme
Exercici 4: Disseny de mduls [15%]
Tasca: Una empresa es dedica a pintar dipsits rectangulars per encrrec i vol una aplicaci que li digui quanta pintura ha de fer servir per a un dipsit determinat.Crear un mdul (acci o funci, el ms adequat) que rebi les mides del dipsit (en metres), si sha de pintar noms per fora o tamb per dins i el rendiment de la pintura (en metres quadrats per kilo de pintura) i digui quants pots de pintura (els pots sn de 1 kg) necessita.funci tankPainting (ent h: real, ent: w: real, ent d: real, ent efficiency: real, ent fullPainting: boole)var
tankArea: real
totalPaint: real
totalPaintCan:enterfvar
tankArea := (2*h*w)+(2*h*d)+(2*w*d);
si fullPainting := S llavors
tankArea := tankArea*2;
totalPaint := tankArea / efficiency;
sino
totalPaint := tankArea / efficiency;
fsitotalPaint := totalPaint + 1;
totalPaintCan := realaEnter (totalPaint);
retorna (totalPaintCan);
ffunciExercici 5: Traducci dun algorisme amb mduls a PHP [20%]
Tasca: L algorisme inferior calcul rees de determinats polgons regulars (polgons amb tots els costats igual de llargs): triangles, quadrats, pentgons i hexagons. Li demana a l'usuari que entri el nombre de costats i la mida del costat.
En aquest algorisme suposarem que disposem de la funci sqrt(x:real):real que retorna l'arrel quadrada de x.algorisme area
const
FORPENTA: real = 0.344;
fconst
var
sidesNumber: enter;
side, area: real;
fvar
{ACCIONS I FUNCIONS}
accio getData (sor n: enter, sor long: real)
n := readInteger();
long := readReal();
faccio
funcio cub (n: real): real
retorna n * n * n;
ffuncio
funcio triangle (long: real): real
var
s: real;
fvar
s := long * 1.5;
return sqrt( s * cub(s-long));
ffuncio
funcio quadrat (long: real): real
return long * long;
ffuncio
funcio pentagon (long: real): real
return 5.0 * quadrat(long) * FORPENTA;
ffuncio
funcio hexagon (long: real): real
return 6.0 * triangle (long);
ffuncio
{PROGRAMA PRINCIPAL}
getData (sidesNumber, side);
si sidesNumber6 llavors
writeString("El Nombre de costats ha d'estar entre 3 i 6");
sino
si sidesNumber = 3 llavors
area := triangle (side);
sino
si sidesNumber = 4 llavors
area := quadrat (side);
sino
si sidesNumber = 5 llavors
area := pentagon (side);
sino
area := hexagon (side);
fsi
fsi
fsi
fsi writeString ("L'rea s ");
writeReal (area);
falgorisme
Cal que ompliu la plantilla PAC2_exer5_plantilla.php amb la traducci de lalgorisme a PHP i li canvieu el nom a PAC2_exer5.php
Indicacions per a PHP
Les dades sentraran pel mtode $_GET en dos parmetres de noms sidesNumber, side. La crida ha de ser del tipus: http://localhost/PAC2_exer5.php?sidesNumber=4&side=27.3Per a comprovar el funcionament podeu fer servirhttp://phppract.comlu.com/pac2/PAC2_exer5.php?sidesNumber=4&side=27.3Advertiments1. En PHP existeix la function sqrt($arg) que retorna l'arrel quadrada de $arg
2. Si voleu que els nmeros reals resultats dels clculs es mostrin amb 2 decimals com a lexemple, lescriptura sha de fer amb lordre printfCopieu aqu el codi de la vostra soluci